为什么这个NLog配置没有存档?

时间:2015-01-20 15:10:15

标签: configuration nlog

这个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>

1 个答案:

答案 0 :(得分:5)

所有目标的所有文件名都包含表达式${shortdate},因此每天都会创建一个新的日志文件。

所有目标的存档期限都设置为Day,每天应该存档日志文件(存档和空当前日志文件)。

由于每天都会创建一个新的日志文件,因此当前的日志文件永远不会超过一天。因此,无需存档。

您可以更改日志的文件名(省略日期,因为如果您使用存档它不是很有用),或者确保存档间隔短于日志文件的生命周期(用于测试,只需尝试将其设置为Minute)。