NLog.config - >删除旧的日志文件可能吗?

时间:2018-06-08 09:39:52

标签: nlog

我对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>

这会在当前日期的文件夹中保存每日日志(并将其展开)。 e.g:

Logs  
   ->2018-06-05
      -> LogFile.log     
   ->2018-06-06
      -> LogFile.log
   ->2018-06-07
      -> LogFile.log
   ->2018-06-08
      -> LogFile.log

我现在想要NLog,清理Logs文件夹,这样只保留过去三天的文件夹和日志。

因此,我阅读了NLog文档并找到了堆栈溢出的解决方案(我已经尝试过),它将日志文件复制到存档目录。但这实际上并不是我想到的。

我想保留我的文件夹结构,只想删除NLog的旧日志。 有没有办法,我可以强制NLog丢弃超过x天的日志?

作为一个例子,我希望NLog像这样清理2018-06-09上的Log-folder

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。

提前感谢任何想法和提示。

此致 莫里斯

编辑: 放弃日期文件夹并使用日期重命名日志文件没有问题。所以如果这有助于找到解决方案。

1 个答案:

答案 0 :(得分:2)

好像我没有子文件夹就可以工作:

<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。

Thx @Rolf Kristensen