2010-02-01 4 views
1

내 애플리케이션에서 로거 계층을 만들려고합니다. (표준 Java 로거를 사용하고 있습니다.) 이렇게하려면 단순히 호출하여 모든 로거의 "할아버지"를 만듭니다. (정적 블록에서) Logger.getLogger ("myapplication"); 그런 다음 모든 콘크리트 로거가 로거를 요청합니다. Logger.getLogger ("myapplication.package1.Main"); 나는 그의 아버지를 창조한다 : Logger.getLogger ("myapplication.package2");로거 계층의 문제점

이제 RMX를 사용하여 로깅 수준을 변경하려면 JConsole을 사용하고 있습니다. myapplication.package1.Main에 대한 getLoggerParentName을 호출하면 myapplication.package1이 표시되고 myapplication.package1에 대해서는 myapplication이 표시됩니다.

그러나 myapplication의 로거 레벨 설정은 하위 레벨에 영향을주지 않습니다. (myapplication.package1 레벨 설정은 Main의 로거 레벨에 영향을 주지만).

어째서? 내가 놓친 게 있니? Logger 클래스를 파고 들자면, 이것이 작동해야한다고 생각합니다 ...

+0

은이 공유지 로깅, Log4j 또는 어떤 API입니까? – pstanton

+0

표준 자바 로깅 : 첫 번째 줄에서 언급 한 바와 같습니다. – pugmarx

답변

0

각 로거에는 고유 한 레벨이 연관되어 있습니다. 레벨이 'null'로 설정된 경우 이는 '상위 로거에서이 로거 레벨을 상속 함'을 의미합니다.

하위 로거에 널 (NULL)이 아닌 레벨이 주어진 경우, 상위에서 레벨 변경을 상속하지 않습니다.

myapplication.package1의 레벨이 명시 적으로 설정되어 있습니까? 각 로거에 대해 getLevel() 결과를 인쇄하면 어떻게됩니까?

+0

JConsole을 사용하여 getLevel을 호출하면 빈 문자열이 표시됩니다. (나는 null을 의미한다고 생각합니다.) – Udi

+0

그것은 효과가있었습니다. 아버지 로깅 수준이 수동으로 설정되었습니다. 감사 – Udi