我想设置我的log4j.xml文件在DEBUG级别记录特定的类/包,在ERROR级别记录其余的。
正如您在下面看到的,我将gov.xxxx.app.batch.thread
的日志级别更新为info,将gov.xxxx.app.batch.sms.DoWork
更新为info。
但是看起来threshold
优先(这是有道理的)。有没有办法让类/包级别的配置优先于阈值?或者另一种方法可以产生预期的结果?
日志4j.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="all"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%d %p %c %L - %m%n"/>
</layout>
</appender>
<appender name="logFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${app.batchdriver.home}/logs/${app.batchdriver.log.name}"/>
<param name="maxFileSize" value="5MB"/>
<param name="maxBackupIndex" value="20"/>
<param name="threshold" value="error"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%d %p %c %L - %m%n"/>
</layout>
</appender>
<!-- Logger for Batch classes -->
<logger name="gov.xxxx.app">
<level value="error"/>
</logger>
<!-- Logger for Spring classes -->
<logger name="org.springframework">
<level value="error"/>
</logger>
<!-- Logger for Hibernate classes -->
<logger name="org.hibernate">
<level value="error"/>
</logger>
<!-- Logger for Apache classes -->
<logger name="org.apache">
<level value="error"/>
</logger>
<!-- Logger for Apache classes -->
<logger name="net.sf">
<level value="error"/>
</logger>
<!-- Logger for testing Performance -->
<logger name="gov.xxxx.app.batch.thread">
<level value="info"/>
</logger>
<logger name="gov.xxxx.app.batch.sms.DoWork">
<level value="info"/>
</logger>
<root>
<priority value ="all" />
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</log4j:configuration>
1条答案
按热度按时间z8dt9xmd1#
如果我正确理解了您的要求,您希望记录:
1.控制台的所有内容
1.指定软件包中的logFile + INFO日志的错误
如果是这种情况,您需要执行以下操作:
1.删除logFile附加器上阈值(或使其为INFO)
1.从根记录器中删除
<appender-ref ref="logFile"/>
,因为根记录器指定了“all”,而您不希望1.添加到要在logFile中查看的所有记录器