nlog 旧存档文件未删除:archiveNumbering=Date,archiveOldFileOnStartup,maxArchiveFiles

nlog old archive files aren't deleted: archiveNumbering=Date,archiveOldFileOnStartup,maxArchiveFiles

NLog 版本 4.3.6

此目标以下列格式在日志目录中创建一个日志文件 Trace_2016-08-03.log 日志文件在启动时移动到存档目录,名称类似于 Trace_2016-08-03_11h33m32s_743ms.log 但是旧的存档文件不会被删除(maxArchiveFiles=2)。谁能帮我解决这个问题。我不知道我做错了什么。

<target name="AsyncTrace" xsi:type="AsyncWrapper">
  <target name="TraceFile" xsi:type="File"
    layout="${time} ${level} ${message} ${exception:format=tostring}"
    fileName="${localLogHome}/Trace_${shortDate}.log" 
    archiveFileName="${localLogHome}/Archive/Trace_{#}.log"
    archiveNumbering="Date"
    archiveDateFormat="yyyy-MM-dd_HH\hmm\mss\s_fff\m\s"
    archiveOldFileOnStartup="true"
    maxArchiveFiles="2"
      />
</target>

感谢您的任何回答!

此配置有 2 个问题。

  1. (普通日志文件的)文件名包含一个日期。 参见 https://github.com/NLog/NLog/issues/354

  2. 当 archiveDateFormat 包含 escapechars 时,存档无法识别现有的存档文件,就像我的示例中那样,因此 yyyy-MM-dd_HH\hmm\mss\s_fff\m\s 被转换为 yyyy-MM-dd_HH.mm.ss

    <target name="AsyncTrace" xsi:type="AsyncWrapper">
        <target name="TraceFile" xsi:type="File"
            layout="${time} ${level} ${message} ${exception:format=tostring}"
            fileName="${localLogHome}/Trace.log" 
            archiveFileName="${localLogHome}/Archive/Trace_{#}.log"
            archiveNumbering="Date"
            archiveDateFormat="yyyy-MM-dd_HH.mm.ss"
            archiveOldFileOnStartup="true"
            maxArchiveFiles="1"
      />