2011-02-15 8 views
20

나는 콘솔 용 로깅을 사용하는 아파치의 PDFBox 라이브러리를 사용하는 간단한 콘솔 앱을 가지고있다.아파치 공유 로깅의 로깅 수준을 조정 하시겠습니까?

2011년 2월 15일 오후 3시 56분 40초 org.apache.pdfbox.util.PDFStreamEngine processOperator 정보 : 나는 내가 억제하고 싶습니다 내 콘솔에서 정크 메일을 많이 받고 있어요 지원되지 않는/비활성화 작업 : 내 코드에서

EI

, 나는 아무 소용 로그 수준을 다시 시도했다 : 이러한 설정에도 불구하고

Logger.getLogger("org.apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF); 
Logger.getLogger("org.apache.pdfbox.util").setLevel(Level.OFF); 
Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF); 

는 메시지는 여전히 콘솔에 게재되어 있습니다. 레벨을 설정하는 방법이 없기 때문에 Commons 로깅에서 로그 오브젝트를 검색하는 것이 도움이되지 않습니다.

프로그래밍 방식으로 이러한 메시지를 표시하지 않을 수 있습니까? 아니면 설정 파일을 추가해야합니까?

답변

5

Commons-logging은 log-facade 일뿐입니다. 즉, 실제로 로그 데이터를 디스크에 기록하는 코드를 제공하지 않습니다. 변경해야 할 사항은 실제 로깅 구현 (예 : logback, log4j, sl4fj 등)의 구성입니다. 해당 라이브러리가 없으면 기본값은 java.util.logging입니다.

예 : log4j을 클래스 경로에 넣고 클래스 경로에 log4j.xml 구성 파일을 추가하는 것이 좋습니다. 이 경우 classpath에 log4j이라는 존재만으로도 초기화 할 수 있습니다. Log4j는 programmatically으로 구성 할 수도 있습니다.

+0

자바 로깅을 사용하고 있습니다. 즉, 다른 로깅 라이브러리가 없습니다. 그리고 Java.util.logger에서 레벨 지정을 무시하는 것 같습니다. – user364902

+0

[properties] (http://www.java-tips.org/java-se-tips/java.util.logging/how-to-configure-a-logger-default-values-with-a)로 할 수 있습니다. (http://java.sys-con.com/node/48541) java.util.logging. –

1

Apache commons-logging은 다른 로깅 프레임 워크 (java.util.logging 또는 Log4J) 아래의 다른 로깅 프레임 워크를 사용하므로 프로젝트에서 어느 것이 사용되는지 조사하고 적절한 로깅 수준을 설정해야합니다.

+0

자바 로깅을 사용하고 있습니다 (즉, 다른 로깅 라이브러리가 없습니다). 그리고 Java.util.logger에서 레벨 지정을 무시하는 것 같습니다. – user364902

2

이 나를 위해 작동합니다

String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine", 
     "org.apache.pdfbox.pdmodel.font.PDSimpleFont" }; 
for (String logger : loggers) { 
    org.apache.log4j.Logger logpdfengine = org.apache.log4j.Logger 
     .getLogger(logger); 
    logpdfengine.setLevel(org.apache.log4j.Level.OFF); 
} 
1

경우에는 아파치 평민 로깅에 의해 아래 사용 로깅 구현이 알아낼 시간이 없다, 당신은 클래스 경로에 모든 것을 해제하려고합니다. 다음 코드는 세 가지 구현을 테스트합니다.

줄이 컴파일되지 않으면 종속성을 추가하지 마십시오! 그냥 선을 제거하십시오.

String[] loggers = { "org.apache.pdfbox.util.PDFStreamEngine", 
    "org.apache.pdfbox.pdmodel.font.PDSimpleFont", "httpclient.wire.header" , "httpclient.wire.content" 
for (String ln : names) { 
    // Try java.util.logging as backend 
    java.util.logging.Logger.getLogger(ln).setLevel(java.util.logging.Level.WARNING); 

    // Try Log4J as backend 
    org.apache.log4j.Logger.getLogger(ln).setLevel(org.apache.log4j.Level.WARN); 

    // Try another backend 
    Log4JLoggerFactory.getInstance().getLogger(ln).setLevel(java.util.logging.Level.WARNING); 
} 
관련 문제