복합 롤링 스타일을 사용하는 Log4Net RollingFileAppender가 데이터를 덮어쓰고 있습니다.

StackOverflow https://stackoverflow.com/questions/734963

문제

다음과 같이 구성된 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에 저장되지 않습니까?아니면 로그가 롤링 중이지만 자정에 다시 롤링되어 날짜가 지정된 로그를 덮어씁니다(예:10MB에 도달하면 MyLog.log2009-04-08로 롤링한 다음 자정에 동일한 파일을 덮어씁니다)?

내가 설정하겠습니다.

<rollingStyle value="Date" />

날짜 경계에서만 롤링되도록 하기 위해 해야 할 일은 이것이 전부입니까?Log4Net.config에서 이를 즉시 변경할 수 있습니까? 아니면 응용 프로그램을 다시 시작해야 합니까?IIS6에서 실행 중입니다.

도움이 되었습니까?

해결책

내 설정은 다음과 같습니다.날짜에만 롤링됩니다.

<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를 변경하면 애플리케이션이 자동으로 다시 시작됩니다(따라서 세션이 손실되는 등).

다른 팁

추가해 보세요 maxSizeRollBackups 당신의 매개변수 RollingFileAppender 우리 문제의 절반을 해결하기 위해.이렇게 하면 로그 파일이 롤링될 때 이전 로그를 덮어쓰지 않고 다른 파일로 롤링하게 됩니다.

<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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top