2011-01-04 16 views
1

상황을 기록 가능하지 않습니다 :이의 log4j 로거가 :는 Logger.setLevel()는 제대로

private static final Logger logger = Logger.getLogger(ThisClassName.class); 

을 그리고를 통해 프로그래밍 방식으로 설정하려고 :

아직
Logger.getLogger(ThisClassName.class).setLevel(Level.DEBUG); 

, DEBUG 레벨 인쇄 swalloed (INFO 인쇄물이 성공적으로 인쇄되는 동안). Logger.getRootLogger().setLevel(Level.DEBUG);

호출 logger.debug ("foo는") Category.forcedLog()ConsoleAppender.doAppend()에 도달 한 다음에 실패 (종료) :

에도이 비트는 효과가 없습니다이 왜

if(!isAsSevereAsThreshold(event.getLevel())) 

어떤 생각을 사고?

+0

프로그래밍 방식 설정과 충돌 할 수있는 값을 가진 구성 파일이 있습니까? – justkt

+0

@justky - 우리 프로젝트에서 흩어져있는 8 개의 log4j.properties 파일을 살펴 보았고 어느 누구도 appender에 레벨이 없습니다. – ripper234

답변

1

appender가 debug보다 큰 임계 값으로 구성되므로 로거가 항목을 무시하지 않지만 appender는 기록하지 않습니다. 당신은 당신의 설정 파일을 통해 또는 프로그래밍 방식 중 하나를, 당신의 ConsoleAppender의 문턱뿐만 아니라 DEBUG을로 구성해야합니다

((ConsoleAppender)someLogger.getAppender("CONSOLE")).setThreshold(Level.DEBUG); 

구성 파일은 일반적으로 이런 종류의 더 우아한 솔루션입니다.

편집 : 분명히, AppenderSkeleton의 서브 클래스가 shouldn't have a threshold filter set by default (ConsoleAppender 포함) 참고. 그래서 어딘가에 실제로 어딘가에 수동으로 임계 값 (> Debug)을 그 애펜더에 @justkt 힌트처럼 할당 할 가능성이 있습니다.

+1

구성 파일은 응용 프로그램 서버 (예 : JBoss, 기본값은 INFO)와 함께 제공되며 OP가 자신을 설정하지 않은 파일 일 수 있습니다. 그/그녀가 확인하기 위해 주위를 둘러 보는 것이 좋습니다. – justkt

+0

저는 이것을 독립형 Java 클래스 (IntelliJ에서 실제로)로 실행하고 있습니다. 질문에 대한 내 의견보기 - log4j.properties 파일에 잘못된 appender 구성을 찾지 못했습니다. 임계 값 설정은 작동했습니다 (루트 로거에서 수행함). – ripper234