如何配置 Nlog 以在一个月后删除日志文件?

How to config Nlog to delete log file after a month?

一个月后的日志文件需要删除。

以下是我的 Nlog.config 文件中的配置:

<target name="file" xsi:type="File" fileName="logs${date:format=yyyy_MM}${date:format=dd}.log" 
    layout="..." 
    
    archiveFileName="logs\archive\log.{#}.txt" <!-- actually I don't want to rename or move it -->
    archiveEvery="Month"
    maxArchiveFiles="1"
/>

我怎样才能让它工作?

NLog 支持两种存档模式,但其中一种 should not be mixing 它们:

  • 动态文件名存档逻辑 - 通过使用 fileName="${shortdate}.log" 启用。这意味着它将根据布局渲染器逻辑动态滚动/归档。

  • 静态文件名存档逻辑 - 通过使用 archiveEvery="Month"archiveFileName="..." 启用。这意味着它将期望文件名是静态的(例如 fileName="app.log")。

NLog 目前不支持子文件夹的存档清理,所以我建议这样做:

<target name="file" xsi:type="File" fileName="logs${date:format=yyyy_MM_dd}.log" maxArchiveDays="31" />

或者将计划任务设置为每周一次 运行 执行旧文件清理,并删除空的子文件夹。