2016-08-04 47 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。然而,我不想過濾appender本身 - 因爲我可能想在那裏路由一些調試或跟蹤消息(例如,當我在開發中時)。

Apache FAQ暗示我可以通過AppenderRef上的日誌記錄級別進行過濾,但我已經嘗試過了,如上面xml中所述 - 並且仍將DEBUG級別消息路由到控制檯。

我也試着在AppenderRef上添加一個ThresholdFilter,但是它也沒有對它進行過濾。

<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控制是否日誌事件也照樣轉發至根記錄或沒有。

相關問題