簡體   English   中英

如何使用LOG4J將具有不同級別的特定類記錄到不同的附加程序

[英]How to log specific class with different levels to different appenders with LOG4J

我遇到一種情況,我有2個追加程序,一個寫入控制台,另一個寫入文件。 我想記錄除DEBUG級別之外的所有內容,只有一堂課除外。 對於此類,我想將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。 然后,有2個例外:org.springframework和org.mybatis。 對於他們,只有1個附加程序適用-控制台。

不過,由於我根本不登錄org.springframework和org.mybatis,因此它並不是我一開始所描述問題的精確解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM