NLog.config -> Возможно ли удалить старые лог-файлы? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть вопрос по поводу Nlog.config.Я не могу удалить старые файлы журналов

Вот что я сначала попробовал с этим NLog.config:

<target name="asyncFileError" xsi:type="AsyncWrapper">
  <target name="file"  xsi:type="File" 
        layout="${date:format=dd/MM/yyyy HH\:mm\:ss.mmm} ${level} ${logger} ${message} - ${exception:format=tostring} [${callsite}]"
        fileName="${specialfolder:folder=ApplicationData}/xyz/Logs/${shortdate}/LogFile.log"
        encoding="UTF-8"
        createDirs="true" />
</target>

Это сохраняет журнал в день (и расширяет его) в папке стекущая дата.Например:

Logs  
   ->2018-06-05
      -> LogFile.log     
   ->2018-06-06
      -> LogFile.log
   ->2018-06-07
      -> LogFile.log
   ->2018-06-08
      -> LogFile.log

Теперь я хочу, чтобы NLog очистил папку Logs, чтобы за последние три дня сохранялись только папки и журналы.

Поэтому я прочитал документацию NLog и нашелрешения по переполнению стека (которые я уже опробовал), которые копируют файлы журналов в каталог архива.Но на самом деле это не то, что я имел в виду.

Я хочу сохранить структуру папок и просто избавиться от старых журналов NLog.Есть ли способ, я могу заставить NLog отказаться от журналов старше x-дней?

В качестве примера я хочу, чтобы NLog очистил папку журнала на 2018-06-09, как это

Logs  
   ->2018-06-07
      -> LogFile.log
   ->2018-06-08
      -> LogFile.log
   ->2018-06-09
      -> LogFile.log

... что означает, что на 2018-06-09 эти папкии журналы пропали:

   ->2018-06-05
      -> LogFile.log     
   ->2018-06-06
      -> LogFile.log

В настоящее время мы используем NLog 4.4.12.

Заранее благодарим за любые идеи и советы.

С уважением, Морис

РЕДАКТИРОВАТЬ: Нет проблем с отказом от папок с датами и переименованием лог-файлов с датой.Так что, если это поможет найти решение.

1 Ответ

0 голосов
/ 19 июня 2018

Похоже, я заставил его работать без вложенных папок:

<target name="asyncFileError" xsi:type="AsyncWrapper">
  <target name="file"  xsi:type="File" 
        layout="${date:format=dd/MM/yyyy HH\:mm\:ss.mmm} ${level} ${logger} ${message} - ${exception:format=tostring} [${callsite}]"
        fileName="${specialfolder:folder=ApplicationData}/xyz/Logs/LogFile.log"
        archiveFileName="${specialfolder:folder=ApplicationData}/xyz/Logs/Archive/Log.{#####}.log"
        archiveAboveSize="10024000"
        archiveNumbering="Sequence"
        maxArchiveFiles="10"
        archiveEvery="Day"
        encoding="UTF-8"
        createDirs="true" />
</target>

Это перемещает файлы журналов в архив каждый день или, если они превышают 10024000 байт.И в архиве хранятся последние 10 файлов (может быть, клиенту придется поработать с максимальным количеством файлов, если он этого захочет).

Я потерял дату в имени файла, но эй ... вы все еще можете увидеть измененную дату вфайловую систему или откройте журнал, чтобы увидеть logdate.Я думаю, вам придется что-то потерять в этой игре: P.

Thx @Rolf Kristensen

...