2017-09-12 1 views
0

방금 ​​내 응용 프로그램에 내장 된 Jetty/Jersey 서버를 추가했습니다.이 서버는 log4j2 로깅 공급자와 slf4j 바인딩을 사용합니다. 로깅 라이브러리는 클래스 경로에 있고 여기에 설명 된대로 부두는 그들을 사용slf4j/log4j2에서 Jetty DEBUG 메시지를 필터링하는 방법은 무엇입니까?

https://www.eclipse.org/jetty/documentation/9.4.x/configuring-logging.html

이, 좋은 일을 제외 부두에서 DEBUG 수준도 언급 한 바와 같이, 매우 시끄러운입니다.

서로 다른 레벨에 3 개의 부속 장치 (하나의 콘솔과 두 개의 파일)가 있으며 그 중 하나의 파일 이름은 프로그래밍 방식으로 구성되며 그 외의 구성은 log4j2.properties 파일에 지정됩니다. 설치가 좀 복잡하기는하지만 필요한 것은 정확히 수행됩니다.

메시지 문자열이 처리되기 전에 또는 단순히 패키지 이름을 기반으로 디버그 메시지를 필터링하기 위해 Jetty 디버그 메시지를 추적하도록 간단한 방법이 있습니까?

로깅 수준을 변환하는 것이 쉽지 않거나 가능할 것이라고는 예상하지 않지만 묻지는 않습니다.

그리고 지금까지 필터링에 관한 한, 즉, 내가 다른 수준, 패키지에 따라 org.eclipse.jetty에 대한 INFO 기본적으로 INFO 내 패키지에 대한 기본값으로 TRACE, 또는 TRACE와 서브 패키지와 서브 패키지를 지정하고 싶습니다 . 이상적으로 이것은 한 곳에서 이루어져야하지만 반드시 그렇게 할 필요는 없습니다.

로거와 어 펜더에 대해 여전히 약간 혼란 스럽습니다. 따라서 시행 착오로 부분적으로 작동하게되었습니다. 예를 들어 rootLogger.level은 아무런 영향을 미치지 않으므로 rootLogger을 통해 필터를 지정할 수 없습니다. 내가 찾은 일부 참조는 특정 클래스와 일치하는 이름으로 로거를 만드는 것이 좋지만이 문제에 대해 어떻게 작동하는지 확신 할 수 없습니다 - 패키지/하위 패키지 수준 필터링과 함께 작동하고, 그렇다면 만들 필요가 있습니다. 모두 동일한 appenders에 쓸 수있는 여러 로거?

답변

2

org.eclipse.jetty에 로거를 지정하고 오류 수준 및 additivity = false로 설정하고 appender를 콘솔 또는 다른 로그에 설정하는 방법은 루트 로거에 기록하지 않으므로 귀찮게합니다.

<Appenders>   
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%-5p:[%c.class(%c{1}.java:%L)] %m%n"/>    
    </Console>     
</Appenders> 

<Logger name="org.eclipse.jetty" level="error" additivity="false">    
    <AppenderRef ref="Console"/> 
</Logger> 
+0

제안 해 주셔서 감사합니다. 서로 다른 로거의 출력을 동일한 파일 첨부 자로 병합 할 수 있습니까? 또한이 구문을'.properties '로 변환하는 방법을 알아야 할 것입니다. – infrared

+1

예, 단순히 (logfile1은 appender 이름 임)을 다른 로거에 추가 한 다음 동일한 로더가 동일한 appdender를 사용하고, 파일 첨부자인 경우 동일한 파일에 로깅합니다. –

0

내 임시 해결책은 rootLogger.level 내 코드 (net.....) 부두 (org.eclipse.jetty)하지만 영향을 info로 변경하는 것입니다. 내가 가지고있는 유일한 로거는 파일 로거이며,이 이름은 net이며, 이것이 작동하는 이유 인 것 같습니다. 이상하게도 thie 파일 로거는 내 코드에 대한 콘솔 출력에도 영향을 미치지 만 작동하는 이유는 이해가되지 않습니다.

관련 문제