2011-01-28 2 views
3

우리는 응용 프로그램 전체 시스템 변수 [debug = true | false]를 유지 관리하고 시스템 변수 debug가 false 일 때 시작할 때 log4j의 모든 콘솔 appender를 비활성화하려고합니다.시스템 변수에 따라 CONSOLE 로그온을 켜거나 끌 수 있습니까?

어 펜더를 프로그래밍 방식으로 스캔하는 가장 좋은 방법은 무엇입니까? 아니면 아마도 내가 모르는 더 우아한 접근법이 있을까요?

appenders를 스캔하는 모든 입문서는 올바른 접근 방법이라면 환영받을 것입니다.

답변

2

나는 콘솔 appender를위한 특별한 필터를 쓸 것이다. 로 정의 된 필터와

<appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.TTCCLayout"> 
     <param name="ConversionPattern" value="%d...m%n"/> 
    </layout> 
    <filter class="OnDebugOnly"/> 
</appender> 

의 선을 따라 물론이 조정을 필요로

import org.apache.log4j.spi.Filter; 
import org.apache.log4j.spi.LoggingEvent; 

public class OnDebugOnly extends Filter { 

    static boolean debug; 

    @Override 
    public int decide(LoggingEvent event) { 
     return (debug ? Filter.NEUTRAL : Filter.DENY) ; 
    } 
} 

다음과 같습니다. 디버그가 정의되고 액세스되는 방법과 동일합니다.
뉴트럴은 누군가 다른 필터를 추가하는 경우를위한 것입니다 ...
플러스 레이아웃은 단지 내 것이므로 여기에서 선호하는 레이아웃을 사용하십시오.
경고. 나는 그것을 테스트하지 않았다 ;-)

0

log4j에 대한 .properties 파일을 설정 한 적이 있습니까? 로그 메시지를 파일에 보내도록 log4j를 구성하고, 정보, 경고 등을 위해 콘솔에 로그 메시지를 보내지 않도록 설정할 수 있습니다. 필요할 경우 클래스 단위로 구성 할 수도 있습니다. 이 사이트로 이동하여 구성 섹션으로 이동하면 필요한 내용을 알려야합니다.

http://logging.apache.org/log4j/1.2/manual.html

는 희망이 귀하의 질문에 대답을 제공합니다.

관련 문제