不同的日志appender对同一个java包使用不同的日志级别?

时间:2013-10-15 03:08:28

标签: java logging logback

这是我的java logback配置:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %msg%n></pattern>
    </encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
        </pattern>
    </encoder>
</appender>
    <logger name="org.apache.zookeeper"  additivity="false">  
     <appender-ref ref="stdout"/>  
   </logger>
   <logger name="com.hazelcast"  additivity="false">  
      <appender-ref ref="stdout"/>  
 </logger>  
<root level="INFO">
    <appender-ref ref="FILE" />
</root>

我想做的是:    我有两个日志追加器:一个用于控制台,另一个用于日志文件;但是对于相同的java包(例如:org.apache.zookeeper),我想使用两个不同的日志级别,INFO用于文件appender,ERROR用于吊装;    但我的日志配置上行不通。   任何人都可以找出我的错误或一些解决方案吗?

2 个答案:

答案 0 :(得分:2)

由于每个Java包的日志级别只能全局定义,因此您可以使用ThresholdFilter过滤控制台appender中ERROR以下的所有级别。

答案 1 :(得分:1)

你可以阻止他们:

    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
        <evaluator>   
            <expression>logger.contains("zookeeper") || logger.contains("hazelcast")    </expression>  
        </evaluator>  
        <OnMismatch>ACCEPT</OnMismatch>  
        <OnMatch>DENY</OnMatch>  
    </filter>