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

如何配置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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:22:36