一、背景
logback输出日志时,包名过长时会显示简称,比如o.a.d.config.bootstrap.DubboBootstrap
完整包名是:org.apache.duboo.config.bootstrap.DubboBootstrap
本文说明其原因并给出解决方法
二、原因
logback.xml配置文件引入了基础配置文件
<include resource="org/springframework/boot/logging/logback/base.xml"/>
base.xml会自动加载两个append,其中CONSOLE的输出格式就会简化包名

三、解决
1. 不引入base.xml
2. 使用自定义的Console
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{HH:mm:ss.SSS} %-5level [ %thread ] %logger Line:%-3L - %msg[Console]%n</pattern> <charset>utf-8</charset> </encoder> </appender> <root LEVEL="info"> <appender-ref ref="Console"/> </root>
四、其它
1. 查看logback加载的Append集合(logback-core)
class ch.qos.logback.core.joran.action.AppenderRefAction { HashMap<String, Appender<E>> appenderBag = (HashMap<String, Appender<E>>) ec.getObjectMap().get(ActionConst.APPENDER_BAG); Appender<E> appender = (Appender<E>) appenderBag.get(appenderName); }
2. logback输出内容位置(Console、File等)(logback-core)
class ch.qos.logback.core.OutputStreamAppender<E>
{ protected void subAppend(E event) { byte[] byteArray = this.encoder.encode(event); writeBytes(byteArray); }
}