Logback 添加 error 级别 Appender 导致 info 级别的 Appender 无法输出

2020-08-25 14:04:14 +08:00
 stephCurry

logback 文件如下:

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

如果没有添加

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

则 RollingFile 和 Console 的日志都能正常输出,一旦加了这三行,那两个也不输出 ur.company 包下的日志了。

1117 次点击
所在节点    Java
3 条回复
jerry74
2020-08-25 15:14:57 +08:00
additivity="true" 这改了就好了
git00ll
2020-08-25 17:22:29 +08:00
你配置了三个同名的[ur.company] logger,日志级别是后面的覆盖前面的,所以此日志的级别是 error 。
此 logger 配置了三个 appender-ref,是可以叠加的,所以 error 日志会输出三份到三个文件里。
所以应该不是不输出日志了,而是只输出 error 日志,楼主可以测一下
stephCurry
2020-08-26 17:31:58 +08:00
@git00ll 是的,测试完是的,同名被下面覆盖了,采用方法是将三个 appender-ref 放在一个 logger 内,然后 appender 通过一下过滤
```
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
```
此方法可解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701268

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX