gpt4 book ai didi

java - 如何使用 LOG4J 将不同级别的特定类记录到不同的附加程序

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:01 24 4
gpt4 key购买 nike

我遇到的情况是,我有 2 个附加程序,一个写入控制台,另一个写入文件。我想用调试级别记录除一类之外的所有内容。对于此类,我想将 DEBUG 记录到控制台,将 ERROR 记录到文件。

我发现这种过滤是通过类别标签完成的,但是我还没有设法将不同级别拆分到特定类上的不同附加程序。

有办法吗?

当前配置如下:

<?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>

最佳答案

好吧,最后我想出了这样的解决方案:

<?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>

日志记录的根级别是 DEBUG,有 2 个附加程序:console 和 file-bl。然后,有两个异常(exception):org.springframework 和 org.mybatis。对于他们来说,只有 1 个附加程序适用 - 控制台。

尽管如此,这并不是我在开头描述的问题的精确解决方案,因为我根本不记录 org.springframework 和 org.mybatis。

关于java - 如何使用 LOG4J 将不同级别的特定类记录到不同的附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com