Logback两个Logger引用同一文件Appender 仅一个可输出日志故障排查
问题原因排查方向
- Logger配置名称与实际类全限定名不匹配
请核对配置中name="org.my.package.FirstClass"的路径是否和实际FirstClass的全类名完全一致,包括大小写、包名拼写。如果匹配失败,该类会继承父包Logger的级别,若父包配置级别为WARN,就会出现仅WARN及以上级别可输出的问题。SecondClass因配置名称匹配正确,所以工作正常。 - 存在更高优先级的配置覆盖了当前Logger级别
Logback配置加载存在优先级和顺序规则:如果有其他配置片段(比如依赖jar包内置的logback配置、Spring Boot环境下application.yml/properties中定义的日志配置、其他后加载的logback配置文件)中也定义了org.my.package.FirstClass对应的Logger,且级别设置为WARN,后加载的配置会覆盖你当前贴出的XML中的配置。 - 代码中硬编码修改了Logger级别
若项目中存在运行时动态修改日志级别的逻辑,比如调用ch.qos.logback.classic.Logger.setLevel(Level.WARN)修改了FirstClass对应Logger的级别,硬编码修改的优先级高于静态XML配置,会导致配置的INFO级别不生效。 - 存在全局过滤规则拦截了FirstClass的INFO日志
如果你配置了Logback全局TurboFilter、或者在上下文层面配置了针对特定类的日志过滤规则,即使Logger本身级别为INFO,符合过滤规则的INFO日志也会被拦截,不会输出到关联的Appender。
内容的提问来源于stack exchange,提问作者Nom1fan
相关产品推荐
相关产品推荐

