2012-07-19 2 views
0

현재 상대적으로 큰 프로젝트의 log4j 구성을 미세 조정하고 있습니다. 현재 로그 항목을 만들 수있는 모든 위치에 대한 로그 수준을 아직 구성하지 않았습니다.Log4j "fallback"appender

log4j에 다른 appender가 구성되지 않은 모든 메시지를 기록하는 대체 appender가 필요합니다. 그래서 예를 들어 나는에 로그 메시지가있는 경우 :

로그 : a.b.c.d를이 :

경고 및 레벨 정보와 패키지 A.B.C를 기록하도록 구성된 펜더가, 출력이 그 어 펜더에 기록되어 있습니다.

그러나 appender가 a.b.c.d를 처리하도록 구성되어 있지 않은 경우 폴백을 사용해야합니다.

내 a.b.c Appender를 치명적 수준으로 구성하면 log4j를 고의로 구성하여 이러한 메시지를 멀리두고 아무 것도 기록하지 않아야합니다.

나는 내가

어떤 제안이 :-) 수행 할 작업을 설명 할 수 있었다 희망?

크리스

+0

기본 동작이 아닙니까? – Keppil

+0

음 ... 내 경우에는 다른 사람이 하나의 큰 로그 파일에 로깅하는 모든 것을 기록하는 rootLogger를 가지고있다 :-(아마도 rootLogger를 잘못 구성하고있다.) –

+1

root에서 모든 것을 얻고 싶지 않다면 logger를 사용하면 다른 appenders에'additivity = false' 플래그를 설정할 수 있습니다. 그러면 로그가 전달되지 않습니다 .. – Keppil

답변

1

당신이 루트 로거에서 모든 것을 얻을하지 않으려면, 당신은 다른 로거에

additivity = "false" 

을 설정할 수 있습니다. 그러면 로그가 전파되지 않습니다.

+0

그 반대가 아닙니까? 로저에서 "추가 성"이 설정되고 appender 설정이 적용되지 않습니다. –

+0

아마도 맞을 것입니다. log4j.xml 파일에서 사용되는 용어이기 때문에'categories '를 사용하는 것이 더 좋습니다. – Keppil

+0

카테고리는 오래된 쓸모없는 용어입니다. 이제는 "로거"라고 불립니다. Appender는 또 다른 것, 나는 Appender와 카테고리/로거가 섞여 있다고 생각한다. –

0

@Keppil이 뭔가 혼란스러워 보입니다.

Additivity는 Logger에 설정된 것으로, 상위 로거 (appender 포함)의 설정이 로거에 전파되는 방식을 제어합니다. 다른 모든 로거 Appender1에 보내는 반면, Appender2에 로그를 보낼 것입니다, 그렇게 ABC (및 모든 자식)에 의해

Root Logger -> Appender1 
Logger a.b.c -> additivity = false, Appender2 

:

그래서, 영업 이익의 경우에, 당신은 이런 식으로 뭔가를 할 수 있습니다 .

+0

엄격히 말하면, 덧셈은 _set_ on입니다. 로거는 로깅이 전파되는 _appenders_에 영향을줍니다. – Keppil

+0

그게 내가 항상 말한 것이 아닌가? :) –

+0

아니요, 답안에서 로거로 전달한다고 썼습니다. – Keppil