2012-01-11 1 views
0

저는 JavaEE SSH 환경에 익숙하지 않고 현재 응용 프로그램의 로그 시스템으로 log4j를 사용하고 있습니다. 하지만 문제는 로그 출력 레벨을 DEBUG로 설정하면 MyEclipse에 콘솔 출력이 너무 많아서 출력 레벨을 WARN으로 전환하면 메시지의 양이 줄어들지 만 관심있는 정보가 손실된다는 것입니다. 그래서 제 질문은 어떻게됩니까? log4j가 편집중인 Java 파일에 의해 생성 된 모든 로그 메시지 만 출력하도록하고 다른 사람이 생성 한 메시지는 출력하지 마십시오.log4j에서 로그 콘솔 출력을 제어하는 ​​방법

답변

3

당신은 log4j.properties 파일을 log4j에를 구성하는 가정하면,이 같은 다른 수준으로 특정 클래스 또는 패키지를 설정할 수 있습니다

log4j.logger.com.foo.MyClass=DEBUG 

더 소개의 log4j 물건 http://logging.apache.org/log4j/1.2/manual.html를 참조하십시오.

+0

각 클래스의 로거 인스턴스가 고유 한 이름을 갖고 있는지 확인하는 경우이 작업을 명심하십시오. 반대로, 다른 클래스에서 수행하려는 작업을 수행하려는 경우 다른 클래스에 같은 이름의 로거 인스턴스를 만들 수 있습니다 (클래스 내에 로거 인스턴스가 1 개 이상있을 수 있음) –

+0

감사합니다! 실제로 작동한다 – ZRJ

2

http://logging.apache.org/log4j/1.2/manual.html

당신은 Logger.getLogger("org.springframework") 통해 생성 된 모든 로거의 로그 레벨을 구성 할 수 있습니다. log4j에 대한 구성 파일을 검색해야합니다. (http://en.wikipedia.org/wiki/Log4j에서) XML에 대한

예 : 도움이

... 
<logger name="org.springframework"> 
    <level value="info"/> 
</logger> 

<!-- 
    everything of spring was set to "info" but for class 
    PropertyEditorRegistrySupport we want "debug" logging 
--> 
<logger name="org.springframework.beans.PropertyEditorRegistrySupport"> 
    <level value="debug"/> 
</logger> 

희망.

0

unix/linux 환경에서 실행중인 경우 정확하게 찾고있는 내용을 tail 및 grep 할 수 있습니다. 이것은 log4j 설정을 수정하는 것보다 훨씬 더 강력합니다.

0

내 log4j 디버그 로깅이 JUnit 유닛 테스트 (Eclipse의 디버깅)에 의해 압도당하는 동일한 문제가있었습니다. 내 log4j 속성 파일에 다음을 추가하여이 문제를 해결했습니다.

log4j.logger.org.springframework=FATAL 
관련 문제