2009-04-09 3 views
9

내가 Log4Net RollingFileAppender이 overwritting 경우 : documentation 보면Log4Net RollingFileAppender 복합 롤링 스타일이로 구성된 데이터

<configuration> 

    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 

    <log4net> 

    <root> 
     <level value="ALL" /> 
    </root> 

    <logger name="RollingFileAppender" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="RollingFileAppender" /> 
    </logger> 

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <param name="File" value="C:\\MyLog.log" /> 
     <param name="AppendToFile" value="true" /> 
     <param name="DatePattern" value="yyyy-MM-dd"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%m%n"/> 
     </layout> 
    </appender> 

    </log4net> 

</configuration> 

을의 는이 의지 의미가 기본 롤링 스타일이 복합, 그래서 날짜가 아닌 특정 크기 (기본값은 10MB)에 도달하면 롤오버됩니다.

문제는 크기가 맞으면 로그를 다시 시작하는 것이고 하루의 전반기 (정오 경에이 크기에 도달)부터 데이터가 손실됩니다.
왜이 파일을 새로운 파일로 옮기지 않고 이후의 모든 로그 라인을 MyLog.log에 넣을 수 있습니까? 또는 로그가 롤링 중이지만 자정에 다시 롤링되고 날짜가있는 로그를 덮어 씁니다 (예 : MyLog.log2009-04-08이 10MB에 도달하면이 파일을 덮어 쓰고 자정에 덮어 씀)?

나는

<rollingStyle value="Date" /> 

이 내가 단지 날짜 경계에 롤 보장하기 위해해야 ​​할 일은이되어 설정합니다? Log4Net.config에서 즉시 변경 가능합니까? 아니면 응용 프로그램을 다시 시작해야합니까? IIS6에서 실행 중입니다.

+0

날짜 : * 및 * 크기를 알고 싶습니다. 아니면 그냥 데이트? –

+0

그냥 날짜를 굴려보고 싶습니다. 그러나 기본적으로 롤링은 합성으로 설정되므로 날짜 또는 크기 중 먼저 발생하는 날짜까지 롤오버됩니다. –

답변

10

내 설정은 다음과 같습니다.

<log4net> 
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:\Logs\Today.log"/> 
     <rollingStyle value="Date"/> 
     <datePattern value="yyyyMMdd"/> 
     <appendToFile value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level %logger %date{ISO8601} - %message%newline"/> 
     </layout> 
    </appender> 
    <root> 
     <!-- Options are "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". --> 
     <level value="ERROR"/> 
     <appender-ref ref="RollingFile"/> 
    </root> 
</log4net> 

web.config가 변경되면 자동으로 응용 프로그램이 다시 시작되므로 세션이 손실됩니다.

8

RollingFileAppendermaxSizeRollBackups 매개 변수를 추가하여 문제의 절반을 해결해보세요. 이렇게하면 로그 파일이 롤링 될 때 이전 로그를 덮어 쓰지 않고 다른 파일로 롤백합니다.

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="C:\\MyLog.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="DatePattern" value="yyyy-MM-dd"/> 
    <param name="maxSizeRollBackups" value="10" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%m%n"/> 
    </layout> 
</appender> 
관련 문제