NLog: автоматическая очистка архивных старых файлов журнала по диапазону дат с ограничением размера файла. - PullRequest
0 голосов
/ 28 декабря 2018

Итак, главный вопрос - я просто хочу удалить архивные журналы, которые старше 30 дней, и мой файл журнала должен иметь максимальный размер 100 МБ.

В руководстве сказано, что:

Архивация файлов на основе времени Файлы журналов также могут автоматически архивироваться на основе времени.Эта конфигурация будет архивировать файл в начале каждого дня и будет использовать динамическое именование файлов, поэтому файл журнала за предыдущий день всегда можно найти в архивах // log.0.txt, журнал за два дня назад находится в архивах //log.1.txt и так далее.В этой конфигурации будет храниться не более 7 архивных файлов, поэтому журналы старше одной недели будут автоматически удаляться.

<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}" 
fileName="${basedir}/logs/logfile.txt" 
archiveFileName="${basedir}/archives/log.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="7"
concurrentWrites="true"
keepFileOpen="false"
encoding="iso-8859-2" />

Но это не работает с ограничениями размера файлов.Он генерирует 7 файлов и очищает каждый раз, когда генерируется новый файл размером 100 МБ.Я сделал некоторый тест, который генерирует файлы журнала каждые 5 минут.Итак, возможно ли учитывать ограничения на размер файла для временной архивации файлов?

Мой код:

<target xsi:type="File" 
name="InfoFile"
fileName="logs/log.txt"
layout="[${date:yyyy-MM-dd}]"
archiveAboveSize="104857600"
archiveEvery="Day"
archiveNumbering="Rolling"
archiveFileName="logs/archives/log.{###}.txt"
archiveDateFormat="yyyyMMdd-hhmmss" 
maxArchiveFiles="30"
enableFileDelete="true" />
...