【发布时间】:2021-12-18 16:06:23
【问题描述】:
我想在我的日志中使用动态文件名 (${shortdate}),并想删除早于 x 天的日志。所以这是我的 Nlog 配置:
<target name="All_File" xsi:type="File" filename="${basedir}/Log/${shortdate}-${machinename}-PROGRAM.log"
layout="${longdate}|${level:uppercase=true:padding=-5}|${callsite:includeNamespace=false:padding=-45}: ${message}"
maxArchiveFiles="1" archiveOldFileOnStartup="true"/>
使用此配置,启动后我应该只有一个日志文件。但 NLog 不会删除旧日志。
我哪里错了? 使用 NLog 4.7.5。
【问题讨论】:
-
NLog 包含当前活动文件(由
filename="..."指定),然后是 X 个存档文件。所以maxArchiveFiles="1"可能会产生 2 个文件(1 个当前文件 + 1 个存档文件)。另见github.com/NLog/NLog/issues/1479 + github.com/NLog/NLog/issues/2775 -
谢谢,罗尔夫。我了解,我在这里混合了存档和活动文件。你知道我怎样才能实现这个用例吗? - 我不想要任何存档文件,只想要活动文件(动态命名) - 应该只存在一定数量的活动文件(例如最后 30 个) 我认为这是一种非常简单直接的方法,但我不知道如何这样做...
-
只有 1 个活动文件。如果要保留最后 30 个文件,则只需指定
maxArchiveFiles="30"。 -
嗨 Rolf,这正是我所做的,它对我不起作用...如果我设置
maxArchiveFiles="1",应该有 1 个活动文件(今天)和昨天的文件,正确的?我无法让它工作...... -
听起来你忘记了我的第一条评论。 “NLog 有当前活动文件(由
filename="..."指定),然后是 X 个归档文件。”请注意,我随后回复了您的其他评论“应该只存在一定数量的活动文件(例如最后 30 个)”。同样总是有 1 个活动文件和 X 个存档文件(受maxArchiveFiles限制)。