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

时间:2016-08-03 09:57:04

标签: c# date archive nlog

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>

感谢您的回答!

1 个答案:

答案 0 :(得分:0)

此配置存在2个问题。

  1. fileName(普通logFile)包含Date。 见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"
      />