You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NLog配置日志归档规则后不删除旧文件该如何排查解决?

NLog旧日志不自动删除问题排查与修复方案

根因定位

  • 核心问题:fileName配置使用了动态日期变量,NLog会将每天新生成的日志文件直接识别为独立的活动文件,不会触发归档逻辑,maxArchiveFiles、maxArchiveDays的清理规则仅对归档文件生效,因此这些按天直接生成的日志文件不会被清理逻辑识别。
  • 次要问题:4.7.11版本的NLog要求归档文件必须由内置归档流程生成才能被纳入清理队列,你当前配置下生成的日期命名日志不属于归档文件范畴,无法触发自动清理。

修正后的配置方案

调整核心逻辑为:固定活动日志文件名,所有日志先写入同一个活动文件,满足天维度或大小阈值后触发归档,归档生成的文件会被自动纳入清理队列。

<target name="appLogFile" type="File"
 fileName="d:\my_logs\nlog_test.log"
 archiveFileName="d:\my_logs\nlog_test-{#}.log" 
 archiveEvery="Day"
 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.7.15以上稳定版本,该版本修复了部分归档清理的边界bug,且完全兼容上述配置。

内容的提问来源于stack exchange,提问作者Tamás Somogyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:45:04