2014-12-03 2 views
4

이것이 내 log4net 구성입니다. 롤오버 로그 파일이 잘못 확장되었습니다. log_debug.txt라는 이름으로 작성된 첫 번째 파일과 log_debug.txt.1로 작성된 롤오버 파일. 이상적으로는 log_debug.1.txt 여야합니다.Log4net preserveLogFileNameExtension이 작동하지 않습니다.

preserveLogFileNameExtension 값을 true로 사용했지만 제대로 작동하지 않는 것 같습니다. 확인하고 제게 잘못 알릴 수 있습니까?

<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
 
    <filter type="log4net.Filter.LevelRangeFilter"> 
 
     <levelMin value="DEBUG" /> 
 
     <levelMax value="DEBUG" /> 
 
    </filter> 
 
    <file value=".\logs\log_debug.txt" /> 
 
    <appendToFile value="true" /> 
 
    <rollingStyle value="Size" /> 
 
    <maxSizeRollBackups value="20" /> 
 
    <maximumFileSize value="2MB" /> 
 
    <preserveLogFileNameExtension value="true" /> 
 
    <staticLogFileName value="true" /> 
 
    <layout type="propertyPatternLayout"> 
 
     <conversionPattern value="%date || Thread=%thread" /> 
 
    </layout> 
 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
 
    </appender>

+0

[staticLogFileName] (http://logging.apache.org/log4net/release/sdk/log4net)과 충돌 할 수 있습니다. .Appender.RollingFileAppender.StaticLogFileName.html) 나는이 시나리오에서 당신이 원하는 것으로 생각하지 않습니다. – stuartd

+0

staticLogFileName을 제거했지만 여전히 작동하지 않는 것으로 테스트했습니다. – user845392

+1

어떤 버전을 사용하고 있습니까? 또한,''을 사용할 수 있습니까? log4net 예외를 수정하기위한 변경 이외에, 이것은 나를 위해 버전 1.2.13에서 작동합니다. – matth

답변

1

(아래) 내 첫 번째 대답은 log4net의 v1.2.10 기반으로하고 있었고, 난 부드럽게 않습니다preserveLogFileNameExtension를 포함하는 v1.2.13 버전으로 prodded했다. 일부 테스트 결과 재산이 의도 한대로 작동하고 staticLogFilename 속성에 의존하지 않는다는 것이 확인되었습니다.

내가 OP 따라서 속성을 포함하지 않는 log4net의 이전 버전을 사용하고 있다고 생각은 나를 깨어 다시 아래에 설명 된 행동

감사 (making3와 시바 쿠마의 댓글이 IMO 자리에있는)를 전시 1.2.10 그루브의


초기 대답

우선 먼저 : 바닐라 log4net에서 RollingFileAppender (또는 펜더) (I 버전 1.2.10.0 찾고 있어요)에 대한 preserveLogFileNameExtension 특성이 없습니다. 대부분의 log4net 구성 요소는 불평없이 그들의 방법을 보내는 속성 구성을 소비하지만 반드시


크기 (또는 복합)에 롤링, 무슨 일하면 전복이다 구성 요소의 행동에 번역하지 않습니다 반복 코드로 로그 파일의 접미어를 하드 코드합니다. 다음 파일 번호 (귀하의 maxSizeRollBackupscountDirection 값에 따라 다릅니다)와 일치하는 "file.log.n"을 항상 얻을 수 있습니다. 현재 RollingFileAppender으로이를 피할 수는 없습니다 (RollingFileAppender.RollOverRenameFiles 방법을보십시오)

어떻게해야합니까? 날짜별로 롤백 할 수 있습니다. 이 경우 datePattern 속성을 사용할 수 있습니다. 압연 할 때 확장자를 보존하고 (파일 이름에 원래의 확장자가 .log 참조) file.log.2014-12-11-11-47-54.log 같은 파일을 만들 것이다

<file value="file.log" /> 
<datePattern value=".yyyy-MM-dd-hh-mm-ss'.log'" /> 

같은 것을 사용할 수 있도록 datePattern은 파일 이름에 추가됩니다. 하지만 크기 제한 측면을 잃고 있습니다. Composite에 가면 같은 문제가 발생할 것입니다. RollOverSize은 항상 RollOverDate 뒤에 나타나므로 번호 프리픽스가 나타납니다.

원하는/원하는 이름 지정 규칙을 사용하여 자신의 appender를 배포 할 수도 있습니다. 당신은 심지어 바닐라 RollingFileAppender에서 상속하려고 시도 할 수 있고 필요한 방법을 오버라이드 만 할 수 있습니다. AdjustFileBeforeAppend은 가상이며 모든 롤오버 필요에 대한 출발점입니다. 당신은 예를 들어 RollOverDateRollOverSize에 대한 호출을 취소하여 복합 모드를 사용할 수 있습니다.

+0

당신은 1.2.10 일 수도 있지만 현재 버전 (1.2.13)에는 적합하지 않을 수 있습니다 : http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension.html 업데이트를 강력히 권장합니다 왜냐하면 1.2.10에서 1.2.11 사이에 고정 된 롤링 파일에 실제로 불쾌한 버그가 있기 때문입니다. –

+0

@JeroenMostert 헤드 감사합니다. 부 버전에서는이 부분에 몇 가지 변경 사항이 있다고 생각하지 않았습니다. – samy

관련 문제