V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stephCurry
V2EX  ›  Java

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

  •  
  •   stephCurry · 2020-08-25 14:04:14 +08:00 · 1104 次点击
    这是一个创建于 1333 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 包下的日志了。

    3 条回复    2020-08-26 17:31:58 +08:00
    jerry74
        1
    jerry74  
       2020-08-25 15:14:57 +08:00
    additivity="true" 这改了就好了
    git00ll
        2
    git00ll  
       2020-08-25 17:22:29 +08:00
    你配置了三个同名的[ur.company] logger,日志级别是后面的覆盖前面的,所以此日志的级别是 error 。
    此 logger 配置了三个 appender-ref,是可以叠加的,所以 error 日志会输出三份到三个文件里。
    所以应该不是不输出日志了,而是只输出 error 日志,楼主可以测一下
    stephCurry
        3
    stephCurry  
    OP
       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>
    ```
    此方法可解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1947 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:02 · PVG 08:02 · LAX 17:02 · JFK 20:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.