回退添加错误附加程序使其他附加程序不起作用

问题描述

这是我的logback.xml;

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOGS" value="./logs"/>

    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{ISO8601} %highlight(%-5level) [%blue(%t)] %yellow(%C{1.} [%M#%L]) %X{serialID}: %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/info-file.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %highlight(%-5level) [%blue(%t)] %yellow(%C{1.} [%M#%L]) : %msg%n%throwable</Pattern>
        </encoder>
    </appender>

    <appender name="DexLogFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/dex.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %highlight(%-5level) [%blue(%t)] %yellow(%C{1.} [%M#%L]) : %msg%n%throwable</Pattern>
        </encoder>
    </appender>

    <appender name="ErrorLogFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS}/error.log</file>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %highlight(%-5level) [%blue(%t)] %yellow(%C{1.} [%M#%L]) : %msg%n%throwable</Pattern>
        </encoder>
    </appender>

    <!-- LOG everything at INFO level -->
    <root level="info">
        <appender-ref ref="Console"/>
        <appender-ref ref="RollingFile"/>
    </root>


    <logger name="com.ssca" level="info" additivity="false">
        <appender-ref ref="DexLogFile"/>
    </logger>

    <logger name="ur.company" level="trace" additivity="false">
        <appender-ref ref="Console"/>
    </logger>

    <logger name="ur.company" level="info" additivity="false">
        <appender-ref ref="RollingFile"/>
    </logger>

    <logger name="ur.company" level="error" additivity="false">
        <appender-ref ref="ErrorLogFile"/>
    </logger>

</configuration>

我只想要一个明显错误日志文件,所以我尝试将错误重定向到error.log,所以我添加了以下几行:

 <logger name="ur.company" level="error" additivity="false">
        <appender-ref ref="ErrorLogFile"/>
 </logger>

没有此代码,一切都很好。但是,一旦我添加了这些行,RollingFile追加器和控制台追加器便不再起作用...

这就像日志级别的问题,但我试图删除可加性,但也不起作用。

我已经阅读了登录网站,但是没有找到任何帮助。


我使用了lombok @ slf4j注释,是否会引起这种冲突?

解决方法

好吧,我只是将过滤器添加到错误附加程序中,然后将错误级别记录器的appender-ref放到信息级别记录器中。代码如下:

 <appender name="ErrorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <file>${LOGS}/error.log</file>
       ........
 </appender>

AND

<logger name="ur.company" level="INFO" additivity="false">
        <appender-ref ref="RollingFile"/>
        <appender-ref ref="ErrorLogFile"/>
</logger>