2011-02-11 5 views
3

로깅 수준을 CONFIG로 설정했지만 CONFIG 수준에서 작성된 메시지는 표시되지 않습니다. 내가 누락 된 것?Java 로깅 수준 혼동

구성 :

Logger logger = java.util.logging.Logger.getLogger("xxx"); 
logger.setLevel(java.util.logging.Level.CONFIG); 

테스트 :

logger.log(java.util.logging.Level.SEVERE, "severe"); 
logger.log(java.util.logging.Level.WARNING, "warning"); 
logger.log(java.util.logging.Level.INFO, "info"); 
logger.log(java.util.logging.Level.CONFIG, "config"); 
logger.log(java.util.logging.Level.FINE, "fine"); 
logger.log(java.util.logging.Level.FINER, "finer"); 
logger.log(java.util.logging.Level.FINEST, "finest"); 

출력 :

SEVERE: severe 
WARNING: warning 
INFO: info 
+1

? 질문에 상충되는 정보가 있습니다. –

+0

업스, 미안. 로그 수준을 CONFIG로 설정했습니다. – alex2k8

+0

내 대답을 편집했습니다. – romaintaz

답변

7

로깅을 구현하는 데 일반적으로 logback을 사용합니다. 더 나은 것으로 기록되어 있습니다. 그래서 나는 그것으로 전환하는 것이 좋습니다.

질문에 대답하기 위해 나는 당신의 Logger이 올바르게 구성되어 있지만 메시지를 보내려는 것이 아니라고 생각합니다. 기본 구성에서는 아마도 루트 로거에 INFO 레벨 로깅을 사용하는 핸들러를 첨부합니다.

편집 : 나는 약간의 테스트 프로그램을 작성하여 실제로 루트 로거에 첨부 된 핸들러의 레벨을 설정해야한다는 것을 확인했습니다. 이 같은 수행 할 수

2011년 2월 11일 오후 4시 32분 14초 Test 메인
CONFIG :

for (Handler handler : Logger.getLogger("").getHandlers()) { 
    handler.setLevel(Level.CONFIG); 
} 
logger.config("config"); 

는 출력으로 제공합니다 설정

이것은을 설정 이것에 연결된 모든 핸들러에 대한 레벨. 분명히 더 나은 선택은 자신의 옵션 파일을 작성하고 로거를 명시 적으로 구성하는 것입니다. 빠른 Google 주제에 this article가 나타났다.

또한으로 구성을 시도 할 수 읽는 속성 클래스 경로에 파일을 A : 당신이 실제로 로그 수준으로,`INFO` 또는`CONFIG`을 설정 않았다

java.util.logging.ConsoleHandler.level=CONFIG 
1

이것은 예상 된 동작입니다.

로그 수준을 정의하면이 수준의 모든 로그뿐만 아니라 상위 수준에 연결된 로그도 볼 수 있습니다.

  • 심각 (최고 값)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (최저치)
  • :

    순서는 다음과 같다

당신이 INFO의 수준을 정의하면

그래서 귀하의 경우, 당신은 단지 SEVERE, WARNINGINFO 로그, 그리고 CONFIG 메시지를 볼 수 있습니다. (등등 log4j에, SLF4J 등)

어쩌면

타사 라이브러리가 Logger 클래스에 사용되며,이 라이브러리는 자체의 수준을 정의 :


편집은 수정 된 질문에 대답하기 로그. 예를 들어, Log4j를 들어, 단지 다음 레벨있다 :

  • DEBUG
  • INFO
  • 는 레벨 CONFIG
  • 이러한 경우 FATAL

이다 ERROR WARN INFO 레벨로 간주되며 현재 동작을 설명합니다.

+0

OP가 레벨을 'INFO'로 설정하지 않았습니다. 그는 그것을 'CONFIG'로 설정했다. ** 편집 ** 좋아, 질문에 실제로 충돌 정보가 있습니다. 그의 영어에서는 "로그 수준을 '정보'로 설정했지만 그의 코드는'logger.setLevel (java.util.logging.Level.CONFIG);이라고 말합니다. –

+0

예, 실제로 명확하지 않습니다. 나는 첫 번째 문장을 생각했다. 코드 바로 아래가 아니었다. – romaintaz

+0

혼란스럽게 생각해서 문제가 해결되었다. – alex2k8