Настройки NLog не удаляют MaxArchiveDays или MaxArchiveFiles? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующий файл конфигурации NLog ниже. Он настроен на архивирование каждый день, и изначально у меня был только MaxArchiveFiles. Теперь я хотел бы хранить только X дней архивированных файлов и нашел информацию о том, что MaxArchiveDays доступен в v4.7 и выше. Итак, я обновился до v4.7, но теперь он, похоже, не архивируется ни по дням, ни по номеру файла.

Кто-нибудь видел что-то не так с этим файлом конфигурации с NLog v4.7?

<?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" 
      throwExceptions="true">

  <variable name="LogDirectory" value="D:/Logs/HRImport"/>

  <targets async="true">

    <target name="DefaultTarget"
      xsi:type="File"
      fileName="${LogDirectory}/LogFile.log"
      encoding="utf-8"
      layout="${longdate} | ${callsite} | ${message}"
      archiveFileName="${LogDirectory}/Archive/${shortdate}_log.{#}.log"
      archiveAboveSize="3145728"   
      archiveEvery="Day"
      archiveNumbering="Rolling"
      maxArchiveFiles="3"
      maxArchiveDays="2"
    />
    <!--1 meg: 1048576 -->

    <target name="ConsoleTarget"
      xsi:type="Console"
      layout="${longdate} ${logger:shortName=True} ${message}${onexception:EXCEPTION OCCURRED\:${exception:format=type,message,StackTrace,method:maxInnerExceptionLevel=8:innerFormat=type,message,StackTrace,method}}"
    />

  </targets>

  <rules>
    <logger name="defaultLogger" minlevel="Debug" writeTo="DefaultTarget,ConsoleTarget" />
  </rules>
</nlog>

** ОБНОВЛЕНИЕ **

<target name="DefaultTarget"
      xsi:type="File"
      fileName="${LogDirectory}/LogFile.log"
      encoding="utf-8"
      layout="${longdate} | ${callsite} | ${message}"
      archiveFileName="${LogDirectory}/Archive/{#}_log.log"
      archiveNumbering="DateAndSequence"
      archiveAboveSize="3145728"   
      archiveEvery="Day"
      maxArchiveFiles="3"
      maxArchiveDays="2"
    />

1 Ответ

2 голосов
/ 21 апреля 2020

Проблема заключается в использовании ${shortdate}:

archiveFileName="${LogDirectory}/Archive/${shortdate}_log.{#}.log"
archiveNumbering="Rolling"

При использовании Layout в archiveFileName тогда оно должно быть очень стабильным c. Только {#} должен содержать динамическую c часть.

Вместо этого попробуйте это:

archiveFileName="${LogDirectory}/Archive/{#}_log.log"
archiveNumbering="DateAndSequence"

См. Также: https://github.com/NLog/NLog/wiki/FileTarget-Archive-Examples

...