这个NLog配置有什么问题?为什么不在“c:\ TempFiles \ AppLogs”中创建存档日志?奇怪的是,它似乎适用于archiveEvery =“Minute”。发生了什么事?
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true" internalLogLevel="Debug" internalLogFile="../logs/nlog.log" throwExceptions="true">
<!-- make sure to set 'Copy To Output Directory' option for this file -->
<!-- go to http://nlog-project.org/wiki/Configuration_file for more information -->
<extensions>
<add assembly="NGinnBPM.MessageBus"/>
</extensions>
<variable name="logDir" value="${basedir}/logs"/>
<variable name="LogsLocation" value="c:\TempFiles\AppLogs" />
<targets>
<target name="err" xsi:type="File"
archiveFileName="${LogsLocation}\logs\contact_errors.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="30"
concurrentWrites="true"
fileName="${logDir}/contact_errors.${shortdate}.log" layout="${time}|T${threadid}|M${mdc:nmbrecvmsg}|${level}|${logger}|${message}${onexception:inner=${newline}${exception:format=tostring}}" />
<target name="nginn" xsi:type="File"
archiveFileName="${LogsLocation}\logs\contact_nginn.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="30"
concurrentWrites="true"
fileName="${logDir}/contact_nginn.${shortdate}.log" layout="${time}|T${threadid}|M${mdc:nmbrecvmsg}|${level}|${logger}|${message}${onexception:inner=${newline}${exception:format=tostring}}" />
<target name="all" xsi:type="File"
archiveFileName="${LogsLocation}\logs\contact.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="30"
concurrentWrites="true"
fileName="${logDir}/contact.${shortdate}.log" layout="${time}|T${threadid}|M${mdc:nmbrecvmsg}|${level}|${logger}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="all" />
<logger name="Slate.*" minlevel="Trace" writeTo="all" final="true"/>
<logger name="*" minlevel="Error" writeTo="err" />
<logger name="NGinnBPM.*" minlevel="Trace" writeTo="nginn" final="true"/>
</rules>
</nlog>
答案 0 :(得分:5)
所有目标的所有文件名都包含表达式${shortdate}
,因此每天都会创建一个新的日志文件。
所有目标的存档期限都设置为Day
,每天应该存档日志文件(存档和空当前日志文件)。
由于每天都会创建一个新的日志文件,因此当前的日志文件永远不会超过一天。因此,无需存档。
您可以更改日志的文件名(省略日期,因为如果您使用存档它不是很有用),或者确保存档间隔短于日志文件的生命周期(用于测试,只需尝试将其设置为Minute
)。