NLog 不会删除旧文件
Posted
技术标签:
【中文标题】NLog 不会删除旧文件【英文标题】:NLog is not deleting old files 【发布时间】:2021-12-01 19:11:46 【问题描述】:我有下面的 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" />
【问题讨论】:
【参考方案1】:问题看起来像,您每天登录不同的文件,因为文件名是使用当前日期创建的。第二天,对新文件进行记录。如果当前文件没有发生替换,则在达到最大大小之前不会创建存档。
请尝试以下配置,
<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
【讨论】:
以上是关于NLog 不会删除旧文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Overwrite 模式时 Spark 不会删除 MemSql 中的旧数据
.env 文件中的 MySQL 密码不起作用,但在 database.php 中工作正常(env() 缓存旧密码,config:clear 不会删除它)