NLog 不删除旧文件

NLog is not deleting old files

我有以下 NLog (4.7.11) 的配置,它每天或当文件长满时创建一个新的日志文件。问题:它根本没有删除旧文件,所以现在日志文件夹中充满了数周前的日志文件。您能否提出问题所在以及如何使其正常工作?

<target name="appLogFile" type="File"
 fileName="d:\my_logs\nlog_test-${date:format=yyyy-MM-dd}.log"
 archiveFileName="d:\my_logs\nlog_test-{#}.log" 
 archiveAboveSize="104857600" archiveNumbering="DateAndSequence" archiveDateFormat="yyyy-MM-dd"
 maxArchiveFiles="2" maxArchiveDays="2"
 openFileCacheTimeout="30" concurrentWrites="True" keepFileOpen="True" createDirs="True"
 layout="${date:format=yyy-MM-dd HH\:mm\:ss.fff K} ${message}" />

问题看起来是,您每天都登录到不同的文件,因为文件名是使用当前日期创建的。第二天,对新文件进行日志记录。如果当前文件没有发生替换,则在达到最大大小之前不会创建存档。

请尝试以下配置,

<target name="appLogFile" type="File"
 fileName="d:\my_logs\nlog_test.log"
 archiveFileName="d:\my_logs\archives\nlog_test-{#}.log" 
 archiveAboveSize="104857600" archiveNumbering="DateAndSequence" archiveDateFormat="yyyy-MM-dd"
 maxArchiveFiles="2" maxArchiveDays="2"
 openFileCacheTimeout="30" concurrentWrites="True" keepFileOpen="True" createDirs="True"
 layout="${date:format=yyy-MM-dd HH\:mm\:ss.fff K} ${message}" />

NLog 4.5(及更新版本)使使用动态布局进行文件归档变得容易:

<target name="appLogFile" type="File"
 fileName="d:\my_logs\nlog_test-${date:format=yyyy-MM-dd}.log"
 archiveAboveSize="104857600"
 maxArchiveFiles="2" maxArchiveDays="2"
 openFileCacheTimeout="30" concurrentWrites="True" keepFileOpen="True"
 layout="${date:format=yyy-MM-dd HH\:mm\:ss.fff K} ${message}" />

删除 archiveFileName + archiveNumbering + archiveDateFormat.

另请参阅:https://github.com/NLog/NLog/wiki/File-target#archive-old-log-files

另请参阅:https://github.com/NLog/NLog/wiki/File-target#dynamic-vs-static-archive-logic