복합 롤링 스타일을 사용하는 Log4Net RollingFileAppender가 데이터를 덮어쓰고 있습니다.
-
09-09-2019 - |
문제
다음과 같이 구성된 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>
제휴하지 않습니다 StackOverflow