2016-08-04 1 views
2
여러 펜더에 여러 로거는

난 할 노력하고있어 매우 정직 :LOG4J2는 : 다른 로깅 수준

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
    <Console name="Console"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </Console> 

    <File name = "hibernateFile" fileName = "${artifactId}/logs/hibernate.log"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File> 

    <File name = "springFile" fileName = "${artifactId}/logs/spring.log"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File> 

    <File name = "rootFile" fileName = "${artifactId}/logs/root.log"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File>   

    </Appenders> 
    <Loggers> 
    <Root level="trace"> 
     <AppenderRef ref="Console"/> 
     <AppenderRef ref="rootFile"/> 
    </Root> 

    <Logger name ="org.springframework" level = "debug"> 
     <AppenderRef ref = "Console" level = "info"/> 
     <AppenderRef ref = "springFile" level = "debug"/> 
    </Logger> 

    <Logger name ="org.hibernate" level = "debug"> 
     <AppenderRef ref = "Console" level ="info"/> 
     <AppenderRef ref = "hibernateFile" level = "debug"/> 
    </Logger> 

    </Loggers> 
</Configuration> 

가 나는 동안 만 중요한 메시지가 내 콘솔 어 펜더에 표시 할 자세한 메시지를 파일 첨부 자로 라우팅하려고합니다.

그러나 나는 디버거를 추적하거나 (예를 들어 내가 개발할 때) 추적 메시지를 원할 수 있기 때문에 appender 자체를 걸러 내고 싶지 않습니다.

AppenderRef의 로깅 수준을 기준으로 필터링 할 수 있지만 위의 xml에서 설명한대로 시도했지만 아직 콘솔에 DEBUG 수준의 메시지를 라우팅합니다.

또한 ThresholdFilter를 AppenderRef에 추가하려고 시도했으나 필터링하지 않았습니다.

<Logger name ="org.hibernate" level = "debug"> 
    <AppenderRef ref = "Console"> 
     <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> 
    </AppenderRef> 
    <AppenderRef ref = "hibernateFile" level = "debug"/> 
</Logger> 

답변

1

additivity="false" 트릭을 수행해야합니다

<Logger name="org.hibernate" level="debug" additivity="false"> 

로그 이벤트도 여전히 루트 로거로 전달되지 않거나 여부 additivity를 제어합니다.