Patrick Skelton Ответов: 1

Почему nlog хранит больше запрошенного количества архивных файлов?


У меня есть конфигурация NLog ниже:

<target
    name="MyLog"
    xsi:type="File"
    fileName="./Logs/${shortdate:cached=true}.txt"
    layout="${message}"
    archiveFileName="./Logs/Archive/${longdate}-{##}.txt"
    archiveOldFileOnStartup="true"
    archiveNumbering="DateAndSequence"
    maxArchiveFiles="2">
</target>


Он создает один файл журнала в /Круглый лес каталог и этот файл перемещается в . / Журналы / Архив каталог каждый раз, когда приложение запускается. Проблема в том, что я просто получаю все больше и больше архивных файлов. Может ли кто-нибудь сказать мне, что я делаю неправильно, чтобы заставить его не соблюдать настройку максимальных архивных файлов?

Что я уже пробовал:

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

F-ES Sitecore

Попробуйте архивную нумерацию, которая не использует дату.

Patrick Skelton

Спасибо за ответ.

Это действительно сохраняет только необходимое количество файлов журнала. Одна странность, что, несмотря на то, что документация говорит, archiveNumbering="подвижного" и archiveNumbering="последовательность" кажутся идентичными, т. е. с более высоким номером архивный файл содержит сообщения позже, чем с более низким номером архивного файла. Это кажется слишком большой ошибкой, чтобы остаться незамеченным, поэтому я думаю, что делаю что-то еще неправильно.

1 Ответов

Рейтинг:
7

Rolf Kristensen

Вы должны удалить "${longdate} " из имени файла архива. Держатель места "{ # # } " автоматически вставит дату и порядковый номер.

Вместо того, чтобы использовать файл-параметр target archiveDateFormat для управления дата-формат, используемый внутри место-держатель.


Patrick Skelton

Какое-то время я не мог заставить это работать. Оказалось, что я пытался использовать двоеточия в формате даты, чего мне удалось избежать с помощью обратной косой черты, как упоминалось в документах. Все равно не получилось. Во всяком случае, переход на дефисы заставил его работать.

Я все еще не совсем понимаю, почему архивирование должно быть взаимоисключающим с наличием какой-либо временной метки в основном файле, учитывая, как легко я нашел его написать код C#, чтобы сделать то, что я хотел. Но большое вам спасибо за помощь.

Rolf Kristensen

Архивная логика NLog включает в себя очистку старых файлов и использует файловый подстановочный знак для распознавания того, какие файлы нужно удалить. Если вы используете "случайные" имена файлов (например, longdate), то файл-подстановочный знак потерпит неудачу.