NLog每日归档功能失效,按分钟归档正常(版本5.0.7)
NLog 5.0.7 每日归档失效问题排查与修复
问题根源
你的配置中fileName包含${shortdate},这会让NLog每天自动生成新的日志文件,导致archiveEvery="Day"的归档逻辑无法触发。原因是NLog的归档机制针对的是当前正在写入的活跃文件,当文件名因日期变量每天变化时,旧文件已不再被写入,自然不会触发归档操作。而archiveEvery="Minute"时,文件名不会每分钟变化,活跃文件持续被写入,因此归档正常执行。
修正后的配置
移除fileName中的${shortdate},让当前日志文件使用固定名称,由归档机制生成带日期的归档文件:
<target name="Httpfile" layout="${longdate} ${uppercase:${level}} correlationId-${activityid} - ${message} ${exception:format=tostring}" xsi:type="File" fileName="${logFullName}-http-api.log" archiveFileName="${logFullNameArchive}-archive-Http-api-${shortdate}-{#####}.zip" archiveEvery="Day" concurrentWrites="true" keepFileOpen="false" archiveNumbering="DateAndSequence" maxArchiveFiles="30" maxArchiveDays="7" enableArchiveFileCompression="true" />
逻辑说明
- 修正后,NLog会持续写入
${logFullName}-http-api.log - 每日结束时,自动将当前日志文件归档为带当日日期的压缩包
- 归档完成后,生成新的
${logFullName}-http-api.log继续接收日志 - 保留原有的
maxArchiveFiles和maxArchiveDays配置,自动清理旧归档文件
内容的提问来源于stack exchange,提问作者Abdessalem MANAI
相关产品推荐
相关产品推荐

