[英]How to log specific class with different levels to different appenders with LOG4J
I have a situation where I have 2 appenders, one writing to console, another to file. 我遇到一种情况,我有2个追加程序,一个写入控制台,另一个写入文件。 I'd like to log everything with DEBUG level except for one class.
我想记录除DEBUG级别之外的所有内容,只有一堂课除外。 For this class I want to log DEBUG to console and ERROR to file.
对于此类,我想将DEBUG登录到控制台,将ERROR登录到文件。
I figured out that this kind of filtering is done by category tag, however I haven't managed to split different levels to different appenders on a specific class. 我发现这种过滤是通过类别标签完成的,但是我还没有设法将不同的级别划分到特定类的不同附加程序。
is there a way to do it? 有办法吗?
Current configuration is the following : 当前配置如下:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/>
</layout>
</appender>
<appender name="file-bl" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="append" value="true"/>
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="log/server-bl2.log.%d{yyyy-MM-dd}.gz"/>
<param name="ActiveFileName" value="log/server-bl2.log"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/>
</layout>
</appender>
<logger name="org">
<level value="DEBUG"/>
<appender-ref ref="console"/>
<appender-ref ref="file-bl"/>
</logger>
<logger name="org.springframework" additivity="false">
<level value="ERROR"/>
<appender-ref ref="file-bl"/>
</logger>
<root>
<priority value="DEBUG" />
<appender-ref ref="console" />
<appender-ref ref="file-bl" />
</root>
</log4j:configuration>
Ok, so in the end I came up with a solution like this : 好的,最后我想出了这样的解决方案:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/>
</layout>
</appender>
<appender name="file-bl" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="append" value="true"/>
<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="log/server-bl.log.%d{yyyy-MM-dd}.gz"/>
<param name="ActiveFileName" value="log/server-bl.log"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}: %p [%t] %c - %m%n"/>
</layout>
</appender>
<logger name="org.springframework" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="console"/>
</logger>
<logger name="org.mybatis" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="console"/>
</logger>
<root>
<priority value="DEBUG" />
<appender-ref ref="console" />
<appender-ref ref="file-bl"/>
</root>
</log4j:configuration>
The root level of logging is DEBUG and there a 2 appenders : console and file-bl. 日志记录的根级别为DEBUG,并且有2个附加程序:console和file-bl。 Then, there 2 exceptions : org.springframework and org.mybatis.
然后,有2个例外:org.springframework和org.mybatis。 For them only 1 appender applies - console.
对于他们,只有1个附加程序适用-控制台。
Though, it's not an exact solution to the problem I described in the beginning since I don't log org.springframework and org.mybatis at all. 不过,由于我根本不登录org.springframework和org.mybatis,因此它并不是我一开始所描述问题的精确解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.