Log4net preserveLogFileNameExtension не работает

это моя конфигурация log4net, в файле журнала опрокидывания создается неправильное расширение. Первый файл, созданный с именем log_debug.txt, и файл опрокидывания, созданный с помощью log_debug.txt.1. но в идеале это должен быть файл log_debug.1.txt.

Я использовал значение preserveLogFileNameExtension, чтобы быть правдой, но, похоже, не работает. Не могли бы вы проверить и сообщить мне, если что-то не так?

1 ответ

Мой первый ответ (см. ниже) был основан на v1.2.10 log4net, и я осторожно подталкивался к версии v1.2.13, которая содержит preserveLogFileNameExtension. Некоторые тесты подтвердили, что свойство также работает по назначению и не зависит от свойства staticLogFilename.

Я думаю, что OP использует предыдущую версию log4net, которая не содержит этого свойства и, таким образом, демонстрирует поведение, описанное ниже (make3 и комментарий Sivakumar находятся на месте IMO)

Еще раз спасибо за то, что вы разбудили меня из паза 1.2.10.

Начальный ответ

Прежде всего: нет свойства preserveLogFileNameExtension для RollingFileAppender (или любого приложения) в vanilla log4net (я смотрю версию 1.2.10.0). Большинство компонентов log4net будут использовать любую конфигурацию свойств, которую вы отправляете без жалоб, но это не обязательно означает поведение в компоненте

При качении по размеру (или композиту) происходит то, что перекатывание жестко закодировано для суффикса файла журнала с номером итерации. Вы всегда получите "file.log.n", где n соответствует следующему номеру файла (который зависит от ваших значений maxSizeRollBackups и countDirection). Вы не можете избежать этого с помощью текущего RollingFileAppender (посмотрите на метод RollingFileAppender.RollOverRenameFiles)

Что делать? Вы можете переходить по дате. В этом случае можно использовать свойство datePattern. datePattern добавляется к имени файла при перекатывании, поэтому вы можете использовать что-то вроде

который сохранит расширение и создаст файл типа file.log.2014-12-11-11-47-54.log (см. расширение оригинала .log в имени файла). Но вы теряете аспект ограничения размера. если вы пойдете на Composite, вы столкнетесь с той же проблемой; поскольку RollOverSize всегда появляется после RollOverDate, будет присутствовать префикс числа.

Вы также можете решить (ah ah) свой собственный append с соглашениями об именах, которые вы хотите/нуждаетесь. Вы даже можете попытаться унаследовать от vanilla RollingFileAppender и только переопределить необходимый метод. AdjustFileBeforeAppend является виртуальным и является отправной точкой для всех потребностей опрокидывания; вы можете попробовать, например, отменить вызовы на RollOverDate и RollOverSize, чтобы использовать композитный режим...

licensed under cc by-sa 3.0 with attribution.