NLog:将名称中带有日期的日志文件保留 x 天

NLog: Retaining log files with dates in names for x days

我想要一个简单的 NLog 日志文件方案:创建名称中包含当前日期的日志文件,然后保留例如 31 天的日志文件。

所以像这样:

2020-11-23.log  <-- Today's date
2020-11-22.log
...
2020-10-24.log
2020-10-23.log  <-- Remove this one as being over 31 days old

这可能吗?

我从阅读文档和各种博客中得到的印象是,对实时日志文件和存档日志文件使用相同的命名方案可能存在问题。另外,我可能需要将存档的日志文件放在另一个文件夹中(尽管所有提到的博客都超过四年了,所以我不知道情况是否仍然如此)。但是,文档似乎不是很详细,我不确定我读过的博客文章是不是最新的。

您可以在 NLog 4.5 中执行此操作:

<target name="file" xsi:type="File"
        fileName="${basedir}/logs/App.${shortdate}.txt" 
        maxArchiveFiles="31" />

它应该可以正常工作,除非您开始使用 archiveFileName=

NLog 4.7 引入了设置 maxArchiveDays= 以帮助同时使用 archiveAboveSize=

如果您想将静态文件名与 archiveFileName= 一起使用,那么这里有一些示例:https://github.com/NLog/NLog/wiki/FileTarget-Archive-Examples