2013-08-30 4 views
1

Я пытаюсь заставить log4net RollingFileAdapter работать так, чтобы мои лог-файлы переходили по дате. Однако я нахожу, что даже когда я копирую example code, я не получаю такое поведение, которого я ожидаю. Вместо того, чтобы получать один файл с сегодняшней датой и временем, он разбивает сообщения журнала между двумя разными файлами. Один файл называется «log», а второй подчиняется конфигу и будет называться «log20130830-1115.txt».Почему log4net создает два отдельных файла журнала при использовании RollingFileAppender?

Если я использую <log4net debug="true"> в моем файле конфигурации, я вижу феллинг в Трассировочном:

log4net: Initial roll over to [c:\inetpub\wwwroot\QuartzTest\ScheduleTest\bin\Debug\log20130830-1115.txt] 
log4net: Moving [c:\inetpub\wwwroot\QuartzTest\ScheduleTest\bin\Debug\log] -> [c:\inetpub\wwwroot\QuartzTest\ScheduleTest\bin\Debug\log20130830-1115.txt] 

Извещение линии два ... Почему это создать файл с именем «войти» в первую очередь? И почему не кажется, что он говорит об этом? Записи в «log» всегда имеют временную отметку ПОСЛЕ любой из записей в правильно названном файле, даже если этот файл появляется первым.

Что здесь происходит? Я перепутал конфигурацию или есть ошибка в log4net RollingFileAppender?

Вот мой конфиг:

<log4net debug="true"> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="[log4net] %d [%t] %-5p %l - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd-HHmm'.txt'" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 

    <root> 
     <level value="INFO" /> 
     <appender-ref ref="TraceAppender" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

ответ

1

Вы катитесь на дату, которая означает, что всякий раз, когда datePattern вы указали изменения, log4net будет катиться файлом журнал. Вы указали шаблон даты, который меняется каждую минуту, поэтому вы должны ожидать, что каждый раз будет загружен новый журнал.

Эти ролики будут называться с использованием шаблона даты, который вы указали. Однако файл журнала active будет называться «log» и переименован во время rollloff. То есть, с вашей конфигурацией log4net всегда будет записывать файл с именем «log» и копировать его после изменения значения datePattern.

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

<appender name="RollingFileDateAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="true" /> 
    <preserveLogFileNameExtension value="true" /> 
    <staticLogFileName value="false" /> 

    <rollingStyle value="Date" /> 
    <datePattern value="yyyyMMdd-HHmm" /> 

    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 

Параметр staticLogFileName управляет именем «активного» файла журнала; когда он ложный, log4net будет использовать datePattern для имени активного файла журнала. Обратите внимание, что это означает, что копия копирования не требуется, вместо этого будет создан новый файл журнала (с соответствующим именем). Установка preserveLogFileNameExtension в true вынуждает log4net использовать расширение .txt при создании файла; обычно он просто добавляет шаблон даты в конец имени файла, что приводит к расширению файла, например .txt20130830-0819, что довольно бесполезно.

+0

Все еще нет улучшения в log4net в этой штуке? Мне нужно создать журналы с отметкой времени по времени, как только текущий журнал достигнет 2 МБ :( – Prasanna

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