2010-11-23 13 views
18

C#으로 작성된 Windows 서비스 프로그램에서 log4net RollingFileAppender를 사용하고 있습니다. 로그 디렉토리에있는 파일의 수와 크기가 너무 빠르게 증가하고 정리가 필요합니다. 구성은 다음과 같습니다 :Log4Net 로그 파일을 자동으로 삭제할 수 있습니까?

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender"> 
<file value="..\logs\MyProgram.%cs{instanceName}.log" /> 
<appendToFile value="true" /> 
<rollingStyle value="Composite" /> 
<datePattern value=".yyyy-MM-dd.lo\g" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="150MB" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" /> 
</layout> 

내가 로그 만 30 일을 유지하려는. 로그를 자동으로 삭제하도록 log4net을 어떻게 구성합니까? log4net을 통해 사용할 수 없다면 어떤 솔루션을 사용할 수 있습니까?

미리 감사드립니다.

답변

-1

This은 도움이됩니다. RollingFileAppender 섹션 여기

+3

그는 이미 RollingFileAppender를 사용하고 있으며이 작업을 수행 할 수 있는지 여부는이 설명서에 나와 있지 않습니다. – steinar

+1

할 일이 없습니다. –

8

을 찾아 것은 본질적으로 같은 일을 요청 SO에 여기에서 또 다른 질문입니다 : Log4Net: set Max backup files on RollingFileAppender with rolling Date

일치는 log4net가 직접 지원하지 않는 것이 었습니다. 한 포스터는 log4net의 소스 코드 저장소에 구현되었지만 아직 발표되지 않았다고 말합니다. 또 다른 포스터에서는 오래된 파일을 정기적으로 정리하는 데 사용하는 코드를 보여줍니다.

+0

이 옵션은 RollingFileAppender를 덮어 쓰는 것보다 쉽기 때문에 나에게 매력적입니다. 이제 Quartz.Net과 같은 스케줄러에 의해 트리거되는 로그 유지 관리 작업을 추가 할 계획입니다. – tonyjy

+1

나는 @jeff가 그의 답변에서 꽤 좋은 해결책을 가지고 있다고 생각했다 : http://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date/2916628#2916628 . 기본적으로 앱을 시작할 때 파일 (또는 파일)을 삭제할 시간인지 확인합니다. 애플리케이션이 너무 오래 실행되지 않는 경우 (즉, 한 번에 30 일을 초과하지 않는 경우), 접근 방법이 충분할 수 있습니다. – wageoghe

4

나는 그것을 확인할 수는 없지만 기존 appender로는 할 수 없다고 확신합니다. (당신이 더 많은 컨트롤을 원하는 경우, 서브 클래스 FileAppender 또는)

  1. 이 RollingFileAppender 하위 클래스를, 자신의 펜더를 만듭니다

    는 그러나, 나는 두 가지 옵션을 참조하십시오. 그런 다음 해당 appender를 사용하도록 config 파일을 변경합니다 (appender 요소 변경).

  2. x 일보다 오래된 파일을 삭제하는 .bat 파일을 만듭니다 (Batch file to delete files older than N days 참조). 그런 다음이 bat 파일을 실행하는 Windows (http://support.microsoft.com/kb/308569)의 작업을 만듭니다. 매일.
+1

나는 첫 번째 접근법을 더 좋아한다. 두 번째 방법은 현재 프로세스보다 배포가 더 필요하며 추적하기 쉽지 않습니다. – tonyjy

관련 문제