【问题标题】:NLog.config -> Deleting old logfiles possible?NLog.config -> 可以删除旧的日志文件吗?
【发布时间】: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


【解决方案1】:

好像我让它在没有子文件夹的情况下工作:

<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/LogFile.log"
        archiveFileName="${specialfolder:folder=ApplicationData}/xyz/Logs/Archive/Log.{#####}.log"
        archiveAboveSize="10024000"
        archiveNumbering="Sequence"
        maxArchiveFiles="10"
        archiveEvery="Day"
        encoding="UTF-8"
        createDirs="true" />
</target>

这会将日志文件每天移动到存档,或者如果它们超过 10024000 字节。并且存档保留最后 10 个文件(如果客户愿意,也许客户应该修改最大文件)。

我丢失了文件名中的日期,但是嘿...您仍然可以在文件系统中看到更改的日期,或者打开日志以查看日志日期。我认为您将不得不在这场比赛中失去一些东西:P。

谢谢@Rolf Kristensen

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 2013-05-25
    • 2019-06-09
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多