3

这是我的 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 用于文件附加器,ERROR 用于 condole;但是我的日志配置不能正常工作。谁能找出我的错误或一些解决方案?

4

2 回答 2

2

由于每个 Java 包的日志级别只能全局定义,因此您可以使用ThresholdFilterERROR在控制台附加程序中过滤以下所有级别。

于 2013-10-15T10:41:56.413 回答
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>  
于 2013-10-16T04:48:06.363 回答