springboot应用程序不打印Info日志
Springboot项目中自己写的代码不打印info日志,但是框架中的info日志都可以打印。
问题: 项目中自己写的代码不打印info日志,但是框架中的info日志都可以打印。
问题原因:日志配置文件错了, 由于jar依赖问题,程序实际使用的是log4j,但是日志配置文件却是log4j2的配置文件。
解决办法:删除maven中引入log4j的jar包,添加log4j2的jar包。
排查思路:slf4j绑定时,会查找org.slf4j.impl.StaticLoggerBinder实现了,搜索一下项目中有几个StaticLoggerBinder类,就能确实使用的日志框架了。(注意:如果同时有多个StaticLoggerBinder类,slf4j会在启动日志的开头打印出有配置问题,控制台上是红色字体)
查看到使用的日志框架后,再看看是否配置了相应的日志配置文件。如:log4j2将默认寻找log4j2.xml 或 log4j2-spring.xml(使用springboot后才会搜索这个文件)等文件。 具体的日志框架默认的文件名可以在网上搜索一下。
扩展:
1)如果自己项目中有日志配置文件就是有本项目的,如果没有,会查找依赖jar包中的日志配置文件。
2)找到一个后, 就使用这个配置文件了,不会再找下一个配置文件了。
3)springboot为什么会找xxx-spring.xml 的日志配置文件呢?可以看看AbstractLoggingSystem类的getSpringConfigLocations方法。
4)只引用了log4j2的jar包,没有配置文件,为什么springboot输出日志会有格式呢?Log4J2LoggingSystem.loadConfiguration方法。spring-boot jar包中有一个log4j2.xml 配置文件。
参考:
1 ) Springboot Logging的配置以及使用详解_蜗行牛步1024的博客-CSDN博客
2)基于slf4j和common-logging的日志框架_lihuayong的博客-CSDN博客_common-logging
3)SpringBoot揭密:spring-boot-starter-logging及源码解析_zhangweiocp的博客-CSDN博客
更多推荐
所有评论(0)