.net Nlog存档文件名:迭代而非有效日期

.net Nlog存档文件名:迭代而非有效日期,.net,nlog,.net,Nlog,我的配置: <target xsi:type="File" name="default" archiveAboveSize="10000000" layout="${VerboseLayout}" fileName="${basedir}/logs/Log_${shortdate}.log" keepFileOpen="false" archiveFileName="${basedir}

我的配置:

    <target xsi:type="File"
        name="default"
        archiveAboveSize="10000000"
        layout="${VerboseLayout}"
        fileName="${basedir}/logs/Log_${shortdate}.log"
        keepFileOpen="false"
        archiveFileName="${basedir}/logs/Log_${shortdate}.{##}.log"
        archiveNumbering="Sequence"
        archiveEvery="Day"
        maxArchiveFiles="50" />

您使用的NLog文件归档逻辑错误:

fileName="${basedir}/logs/Log_${shortdate}.log"
archiveFileName="${basedir}/logs/Log_${shortdate}.{##}.log"
archiveEvery="Day"
您不应该为
archiveFileName
指定${shortdate}。它将使用当前时间,而不是上一个logevent(您期望的)的时间

您不应该指定
archiveEvery=“Day”
,因为文件名已经包含
${shortdate}
,所以它将自动滚动到新文件

相反,在使用NLog 4.4或更早版本时,您应该这样做:

fileName="${basedir}/logs/Log_${date:format=yyyy-MM-dd}.log"
archiveFileName="${basedir}/logs/Log_{##}.log"
archiveDateFormat="yyyy-MM-dd"
archiveNumbering="DateAndSequence"
archiveAboveSize="10000000"
archiveEvery="Year"
maxArchiveFiles="50"
  • archiveFileName-使用{#}允许归档清理生成正确的文件通配符
  • archiveDateFormat-必须与文件名的${date:format=}匹配(因此,如果需要更改,请记住更正这两种日期格式)
  • ArchiveNumber=DateAndSequence-配置归档清理以支持将文件名解析为日期和序列号
  • archiveEvery=Year-激活存档清理,但也激活存档文件操作。因为配置的文件名会自动确保存档文件操作,所以我们不需要任何额外的存档操作(例如,避免在午夜生成额外的空文件)
  • maxArchiveFiles-要保留多少存档文件
当使用NLog 4.5(或更新版本)时,应满足以下要求:

fileName="${basedir}/logs/Log_${shortdate}.log"
archiveAboveSize="10000000"
maxArchiveFiles="50"
fileName="${basedir}/logs/Log_${shortdate}.log"
archiveAboveSize="10000000"
maxArchiveFiles="50"