不少人会有logback.xml里面root与logger关系,他们之间如何继承如何配置才能达到需求的问题,网上归纳的很凌乱,以下是个人总结的几条黄金法则。
- root是公共属性,没有logger时会找root里对应level的appender
- additivity默认为true,为true时会忽略level限制并继承root节点中配置的所有属性
说明:additivity为true时,默认会继承所有root节点下配置的所有appender,例如你配了2个root,每个root下各自有1个appender,那么你的logger节点同时会继承这两个appender(appender name不同),且和日志的级别无关,
多个root之间的appender如果有重复,会按appender的name属性自动去重。
而logger下的appender与root下appender的不会去重,比如你logger下的appender打到控制台,logger下的也打到控制台,那么最后结果是日志打两遍。
- additivity为false时,会忽略root中的所有配置的appender,只生效logger下的appender
建议:
如果对日志打印方式有要求,可以只配logger然后再logger下分别配置appender,这样会有一点冗余,但是至少不会出错。
下面是一个小例子,只粘贴出了logger与root部分
<logger name="org" level="INFO"/> <logger name="ch.qos.logback" level="INFO"/> <logger name="com.alibaba.dubbo" level="INFO"/> <logger name="net" level="INFO"/> <logger name="com.fnic" level="INFO" additivity="false"> <appender-ref ref="stdout"/> <appender-ref ref="logFileInfo"/> </logger> <logger name="**.***.***.xxController" additivity="false" level="DEBUG"> <appender-ref ref="stdout"/> <appender-ref ref="logFileDebug"/> <appender-ref ref="logFileInfo"/> </logger> <!--TRACE<DEBUG<INFO<WARN<ERROR--> <root level="INFO"> <appender-ref ref="stdout"/> <appender-ref ref="logFileInfo"/> </root>
解析
<logger name="org" level="INFO"/> <logger name="ch.qos.logback" level="INFO"/> <logger name="com.alibaba.dubbo" level="INFO"/> <logger name="net" level="INFO"/>
这一段由于没有<appender-ref>元素并且又没配置additivity="false" 所以会继承root里的所有appender,所以<root level="INFO"> 这个下面所有appender生效。这种情况下的继承是不分root的level的,所有root都会被继承到
<logger name="com.fnic" level="INFO" additivity="false"> <appender-ref ref="stdout"/> <appender-ref ref="logFileInfo"/> </logger>
这段是针对com.fnic包下所有class的日志配置,由于配置了additivity=false,所以只会生效 <appender-ref ref="stdout"/>以及<appender-ref ref="logFileInfo"/>这两行
<logger name="**.***.***.xxController" additivity="false" level="DEBUG"> <appender-ref ref="stdout"/> <appender-ref ref="logFileDebug"/> <appender-ref ref="logFileInfo"/> </logger>
这一段是针对xxController这个类的配置,此类所有DEBUG级别以上的日志信息都会按<appender-ref ref="stdout"/> <appender-ref ref="logFileDebug"/><appender-ref ref="logFileInfo"/>3个appender打印,并且有配置additivity=false 也不会继承任何root
相关推荐
LogBack配置文件,主要包括LOGBack的配置文件内容
logback配置详解,关于logback的spring集成配置的详细说明及示例
springboot-logback日志文件配置
微服务框架SpringBoot+通用Mapper(tk.Mybatis)整个项目架构,直接上手开用,yml和logback配置都已经配置完好
springboot整合logback配置文件
android的logback配置文件,放于assest文件内,此外还需其他的配置才能用
项目中在使用的logback,拿过去直接可以用,带完整的中文说明。
用于logback框架通用xml配置文件
该文件包含logback配置文件示例和配置文件内容解析,如果想深入学习的系哦小伙伴可以下载看看,如果只是想实现功能,可以查看我的博客 《整合篇------JAVA项目整合Logback》
log4j 和 logback配置资源 log4j和logback相关架包.zip
NULL 博文链接:https://fanshuyao.iteye.com/blog/2414522
logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties
logback日志写logstash配置appender参考
logback配置例子,日志系统推荐使用SLF4J,其性能要优于log4j
该压缩包包含 logback类库所包含的jar包以及logback.xml配置文件(放到 src 目录),用于开发学习使用。
logback配置文件demo,用于在springboot项目中放到resource 目录下即可 logback配置文件demo,用于在springboot项目中放到resource 目录下即可
logback配置文件放入resource
logback是在log4j的基础上衍生出来的日志管理技术,现在外面用的也非常广,这里给大家分享一个我们经常用的配置,我们公司项目中已经在使用了,亲测可行,需要的下载看看,希望对你有帮助