2015-01-20 4 views
2

Что не так с этой конфигурацией NLog? Почему журналы архива не созданы в «c: \ TempFiles \ AppLogs»? Как ни странно, он работает для архиваEvery = «Minute». Что происходит?Почему эта конфигурация NLog не архивируется?

<?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

Существует ли каталог 'c: \ TempFiles \ AppLogs' уже существует? Вы проверили «logs/nlog.log» на наличие ошибок? – nemesv

+0

да и да - папка пуста – CarneyCode

ответ

4

Все имена всех целей содержат выражение ${shortdate}, поэтому новый лог-файл создается каждый день.

Период архива для всех целей установлен в Day, который должен архивировать файл журнала каждый день (архив и пустой текущий файл журнала).

Поскольку каждый день создается новый файл журнала, текущий файл журнала никогда не бывает старше одного дня. Поэтому архивировать нечего.

Вы можете либо изменить имя файла журнала (опустить дату, поскольку оно не полезно, если вы используете архивирование), либо убедиться, что интервал архивации короче, чем срок службы файла журнала (для тестирования просто попробуйте установить его на Minute).

Смежные вопросы