2014-12-03 9 views
4

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

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

<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
 
    <filter type="log4net.Filter.LevelRangeFilter"> 
 
     <levelMin value="DEBUG" /> 
 
     <levelMax value="DEBUG" /> 
 
    </filter> 
 
    <file value=".\logs\log_debug.txt" /> 
 
    <appendToFile value="true" /> 
 
    <rollingStyle value="Size" /> 
 
    <maxSizeRollBackups value="20" /> 
 
    <maximumFileSize value="2MB" /> 
 
    <preserveLogFileNameExtension value="true" /> 
 
    <staticLogFileName value="true" /> 
 
    <layout type="propertyPatternLayout"> 
 
     <conversionPattern value="%date || Thread=%thread" /> 
 
    </layout> 
 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
 
    </appender>

+0

Это может быть конфликт с [staticLogFileName] (http://logging.apache.org/log4net/release/sdk/log4net .Appender.RollingFileAppender.StaticLogFileName.html), который я не думаю, что вы хотите в этом сценарии. – stuartd

+0

Я проверил удаление staticLogFileName, но все еще не работает. – user845392

+1

Какую версию вы используете? Кроме того, вы можете попробовать использовать ''? Вне этого, чтобы исправить исключение log4net, это работает для меня в версии 1.2.13. – matth

ответ

1

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

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

Спасибо снова разбудил меня 1.2.10.


Первоначального ответ

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


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

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

<file value="file.log" /> 
<datePattern value=".yyyy-MM-dd-hh-mm-ss'.log'" /> 

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

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

+0

Возможно, вы правы 1.2.10, но не для текущей версии (1.2.13): http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension.html Настоятельно рекомендуется обновление , потому что на самом деле есть некоторые неприятные ошибки с скользящими файлами, которые установлены между 1.2.10 и 1.2.11. –

+0

@JeroenMostert Спасибо за головы. Я не думал, что в этой части были некоторые изменения в младших версиях. – samy

 Смежные вопросы

  • Нет связанных вопросов^_^