2010-12-08 6 views
2

어떻게 든 이전 로그 파일이 MaxFileSize를 초과 할 때 내 log4net이 새 파일로 롤링되지 않고 이미 초과 된 로그 정보를 쓰지 않습니다. 그러나 서버를 다시 시작하면 이전 서버 이름이 ServerLog.txt.1로 바뀌고 새 파일 ServerLog.txt가 만들어져 해당 파일에 기록됩니다.Log4Net이 MaxFileSize를 롤백하지 않습니다.

<?xml version="1.0" encoding="utf-8"?> 
<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\ServerLog.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="5MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 
    </appender> 

    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

누군가가 나를 도와 주시겠습니까 : 여기

내 log4net.xml 파일입니다? 감사.

+0

파일 권한 문제로 인해 백업 파일을 만들거나 이름을 바꿀 수 없습니까? 로그 파일은 어디에 있습니까? – MatthiasG

+0

웹 응용 프로그램 웹 사이트/로그/ServerLog.txt와 같은 디렉토리에 있습니다. NETWORK SERVICE 계정을 이미 읽기/쓰기/수정으로 설정 했습니까? – Leo

+0

문제가 보이지 않습니다. 그것은 rollingStyle = Once와 같이 행동합니다. 소스 코드에서 그것을 재정의하지 않았는지 확인하십시오. –

답변

2

IIS의 로그 사용으로 인해 문제가 발생할 것으로 생각됩니다. 다른 앱 도메인에서 IIS 내에서 로그 파일에 액세스 할 가능성이 있기 때문에 로그 파일이 다른 앱 도메인에서도 열리기 때문에 파일을 롤 할 수없는 앱 도메인에 문제가있을 수 있습니다.

파일에 액세스 할 때 앱 도메인 충돌을 방지하려면 appender로 잠금 모델 설정이 필요합니다.

당신이 뭔가를 할 수 있어야한다 :

<?xml version="1.0" encoding="utf-8"?> 
<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\ServerLog.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="5MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" /> 
    </appender> 

    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 
0

'staticLogFileName'을 제거하려고합니다. 우리는 당신과 거의 같은 설정을 사용합니다. 그러나 우리는 staticLogFileName 속성을 지정하지 않습니다. (정적 인 파일 이름을 true로 설정해야하므로 어둠에 잠긴 것입니다.)

관련 문제