2013-08-30 1 views
1

내 로그 파일이 날짜별로 롤백되도록 log4net RollingFileAdapter를 작동 시키려고합니다. 그러나 나는 심지어 내가 example code을 복사 할 때, 내가 기대하는 행동을 얻지 못한다는 것을 발견했다. 오늘 날짜와 시간의 단일 파일을받는 대신 로그 메시지를 두 개의 다른 파일로 분할합니다. 한 파일은 "로그"라고하고 두 번째 파일은 구성을 따르고 'log20130830-1115.txt'라고합니다. 왜 처음에 "로그인"라는 파일을 생성 않습니다 ...RollingFileAppender를 사용할 때 log4net이 두 개의 개별 로그 파일을 만드는 이유는 무엇입니까?

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] 

공지 라인이 :

내 설정 파일에 <log4net debug="true">를 사용하는 경우, 나는 추적 출력의 folling를 참조? 그리고 왜 그것이 말하는 것에 대한 움직임을 보이지 않는가? 'log'의 항목은 올바르게 명명 된 파일의 모든 항목 이후에 항상 해당 파일이 먼저 표시 되더라도 타임 스탬프가 적용됩니다.

여기가 어떻게됩니까? 내가 엉망으로 설정했거나 log4net RollingFileAppender에 버그가 있습니까? 당신은 datePattern 변경 사항을 지정한 때마다 log4net 로그 파일을 롤 것을 의미하는 날짜에 배포 할 예정입니다

<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

:

여기 내 설정이다. 분마다 변경되는 날짜 패턴을 지정 했으므로 매 분마다 새로운 로그 롤오프가 필요합니다.

이 롤오프는 지정한 날짜 패턴을 사용하여 이름이 지정됩니다. 그러나 활성 로그 파일의 이름은 "log"이며 롤오프 중에 이름이 바뀝니다. 즉, 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 설정은 "활성"로그 파일의 이름을 제어합니다. false이면 log4net은 datePattern을 사용하여 활성 로그 파일의 이름을 지정합니다. 이는 롤오프 복사본을 수행 할 필요가 없다는 것을 의미하며, 대신 적절한 이름의 새 로그 파일이 생성됩니다. preserveLogFileNameExtension을 true로 설정하면 파일을 만들 때 log4net이 .txt 파일 확장자를 사용합니다. 일반적으로 파일 이름의 끝에 날짜 패턴을 추가하기 만하면 .txt20130830-0819와 같은 파일 확장자가 생겨 꽤 쓸모가 없습니다.

+0

아직도이 문제에 log4net에 대한 개선이 없었습니까? 현재 로그가 2MB에 도달하면 날짜 시간 스탬프가있는 로그를 만들어야합니다. – Prasanna

관련 문제