【发布时间】:2018-06-08 09:39:51
【问题描述】:
我有一个关于 Nlog.config 的问题。我无法删除旧的日志文件
这是我首先尝试使用此 NLog.config:
<target name="asyncFileError" xsi:type="AsyncWrapper">
<target name="file" xsi:type="File"
layout="${date:format=dd/MM/yyyy HH\:mm\:ss.mmm} ${level} ${logger} ${message} - ${exception:format=tostring} [${callsite}]"
fileName="${specialfolder:folder=ApplicationData}/xyz/Logs/${shortdate}/LogFile.log"
encoding="UTF-8"
createDirs="true" />
</target>
这会将每天的日志保存(并展开)当前日期的文件夹中。 例如:
Logs
->2018-06-05
-> LogFile.log
->2018-06-06
-> LogFile.log
->2018-06-07
-> LogFile.log
->2018-06-08
-> LogFile.log
我现在想要 NLog,清理日志文件夹,以便只保留过去三天的文件夹和日志。
因此,我阅读了 NLog 文档并找到了堆栈溢出的解决方案(我已经尝试过),将日志文件复制到存档目录。但这实际上并不是我的想法。
我想保留我的文件夹结构,只想摆脱 NLog 的旧日志。 有什么办法,我可以强制 NLog 丢弃早于 x 天的日志吗?
例如,我希望 NLog 像这样在 2018 年 6 月 9 日清理日志文件夹
Logs
->2018-06-07
-> LogFile.log
->2018-06-08
-> LogFile.log
->2018-06-09
-> LogFile.log
...这意味着在 2018-06-09 这些文件夹和日志已经消失:
->2018-06-05
-> LogFile.log
->2018-06-06
-> LogFile.log
我们目前使用的是 NLog 4.4.12。
提前感谢任何想法和提示。
问候, 莫里斯
编辑: 放弃日期文件夹并用日期重命名日志文件没有问题。因此,如果这有助于找到解决方案。
【问题讨论】:
-
NLog 不支持子文件夹中的递归日志清理。我建议升级到 NLog 4.5 并停止使用子文件夹。另见:github.com/nlog/NLog/wiki/File-target#archive-old-log-files
-
根据您的提示,我让它与我们目前使用的 Nlog 版本一起工作(无论如何我都会升级它)。我以前试过这样,但没有用。可能是因为我试图在日志文件名称中获取日期,因为文档说它不适用于该日期。谢谢
标签: nlog