如何配置NLog每周或每月仅生成一个新日志文件?
NLog日志按月/周滚动配置问题解决
你的日志每天生成新文件,核心原因是fileName配置里用了${shortdate}变量——这个变量会让NLog每天创建一个以当日日期命名的新文件,直接抵消了archiveEvery的滚动规则。
要实现按月/周滚动日志,需调整以下配置:
- 去掉
fileName中的日期变量,改为固定文件名 - 配置
archiveFileName指定归档文件的命名规则(带上日期标识) - 配合
archiveNumbering="DateAndSequence"确保归档文件命名唯一
修改后的完整配置示例:
<targets> <target xsi:type="File" name="systemLogTarget" archiveEvery="Month" fileName="${basedir}/logs/system.log" archiveFileName="${basedir}/logs/system.{#}.log" archiveNumbering="DateAndSequence" archiveDateFormat="yyyy-MM" layout="${longdate} - ${uppercase:${level}} - ${message} ${exception:format=stacktrace:separator=\r\n\t}" /> </targets> <rules> <logger minlevel="Error" writeTo="systemLogTarget" /> </rules>
配置说明:
fileName="${basedir}/logs/system.log":日常日志写入固定文件,不会每天新建archiveEvery="Month":每月执行一次归档(改为"Week"可实现每周滚动)archiveFileName="${basedir}/logs/system.{#}.log":归档文件的命名模板,{#}会被替换为日期和序列(如果当月有多个归档)archiveDateFormat="yyyy-MM":指定归档文件名中的日期格式(按月用yyyy-MM,按周可用yyyy-ww)- 把
minlevel从Debug改成Error,匹配你仅记录错误信息的需求
这样配置后,日常错误日志会持续写入system.log,每月结束时NLog会自动将其归档为system.2024-09.log这类带日期的文件,然后新建system.log继续记录新日志,实现一次性查看整月错误数据的需求。
内容的提问来源于stack exchange,提问作者chris84948
相关产品推荐
相关产品推荐

