Log4net RollingFileAppender를 강제로 롤하십시오
-
03-07-2019 - |
문제
에 따르면 log4net 문서, RollingFileAppender는 메시지가 기록 될 때만 로그 파일 만 롤링합니다. 이 파일에 로그인해야하지만 매일 다른 데이터베이스로 가져옵니다. 파일이 필요하기 때문에 데이터베이스 appender를 사용할 수 없으며 로그 파일에서 데이터를 데이터베이스로 변환해야합니다 (직접 사본이 아님). 문제는 자정 이후 로그 활동이 없으면 로그가 롤링되지 않는다는 것입니다. 수입업자는 전일일 파일을 찾습니다 (그리고이 코드를 변경할 수 없습니다). 활동이없고 로그가 롤링되지 않은 경우 수입업자는 파일을 찾지 못합니다. 어쨌든 깨어나고 롤을 강제하는 다른 실이 없으면 자정에 통나무를 강제로 강제로 강요 할 수 있습니까? 커스텀 appender가 이것을 할 수 있습니까? 가능하면 이것을 피하고 싶습니다.
해결책
동일한 구성을 사용하여 더미 로그 항목을 작성하는 자정 직후 이벤트를 시작하는 Windows 서비스를 작성하십시오.
다른 팁
"롤오버 루틴으로 이어지는 코드 경로는 무엇입니까?"라는 질문의 시점에서 이것에 대해 생각해야합니다. 그 루틴에 어떻게 도달하는지 알면 트리거하는 방법을 결정할 수 있습니다.
커스텀 appender가 할 수 있습니까? 물론, 그러나 appender의 코드는 당신이 그것을 통해 로그인 할 때까지 실행되지 않으므로 정사각형으로 돌아갑니다.
질문에 관해서는 "어쨌든 깨어나고 롤을 강요하지 않고 자정에 통나무를 강제로 강제로 강제해야합니까?" 코드가 실행되지 않고 자정에? " 나는 그것에 대해 재미 있거나 당신을 모욕하려고 노력하지 않습니다. 나는 단지 당신을 위해 그것을 희망적으로 대답 할 수있는 방식으로 질문을 다시 만들려고 노력하고 있습니다. :-)
이것을 해결하는 가장 쉬운 방법은 파일이 회전하도록 강제로 일시 일어나서 로그를 작성하는 것입니다.
에 따르면 RollingFileAppender 문서 매일 롤링하도록 설정할 수 있습니다.이 구성을 참조하십시오.
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>