2009-09-18 2 views
16

예를 들어 처음으로 응용 프로그램을 실행할 때 (또는/logs 디렉토리를 지우 자마자) log4j가 log.0이라는 파일에 응용 프로그램 로그를 기록하도록합니다. 그런 다음 응용 프로그램을 종료하고 다시 시작하면 log.1에 로그를 기록합니다. 등등.log4j를 구성하여 응용 프로그램을 실행할 때마다 새 파일을 만들 수 있습니까?

필자는이 파일을 구성 파일에 보관하고 싶지만, 그렇지 않으면 log4j를 설정할 때 항상 응용 프로그램에서 수행 할 수 있다고 생각합니다.

이것이 가능합니까? 그렇다면 어떻게?

답변

0

내 머리 꼭대기에서 벗어나 Log4j에서 가능하지 않다고 생각합니다. 어쩌면 응용 프로그램을 종료 할 때 .log 파일의 이름을 바꿀 수 있으므로 다음 번에 새 로그 파일을 만들 때 시작할 수 있습니다. ** 나는 또 하나 개의 솔루션을 가지고 :

+0

그렇다면 나는 다소 실망합니다. log4j는 내 모든 요구를 충족 시키며 잘 수행합니다. 난 그냥 날짜 또는 파일 크기 대신 실행하여 내 로그를 그룹화 할 수 싶습니다. –

+0

log4j (long story)에 대한 추가 어댑터를 작성한 후 소스 코드를 읽기가 쉽고이 기능을 구현하는 데 오랜 시간이 걸리지 않을 것이라고 잘 문서화되어 있습니다. – Karl

1

uniquely named files (by timestamp)의 로그백 설명서를 참조하십시오. log4j2와

+2

다른 프레임 워크에 대한 대답이 아닌 log4j 자체입니까? 적어도 나를 위해 log4j 함께 작동하지 않습니다 : ' log4j : WARN 계속 구문 분석 오류 11 및 열 61 log4j : WARN 요소 형식 "타임 스탬프"를 선언해야합니다. log4j : WARN 계속 구문 분석 오류 18 및 열 16 log4j : WARN 요소 유형 "appender"의 내용은 "(errorHandler?, param *, layout?, filter *, appender-ref *)"와 일치해야합니다. ' – Henning

3

솔루션 : OnStartupTriggeringPolicy% 내가에서 filePattern

 <RollingFile name="RollingFile" fileName="${log-path}/GScraper.log" 
       filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log"> 
     <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout> 
      <pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      <SizeBasedTriggeringPolicy size="32 MB" /> 
      <OnStartupTriggeringPolicy/> 
     </Policies> 
    </RollingFile> 

참고. 이렇게하면 Log4j는 App을 실행할 때마다 색인과 함께 새로운 로그 파일을 생성합니다.

관련 문제