您的位置:首页 > 娱乐 > 八卦 > 武汉掌上人才网_在线制作app下载_怎么上百度推广产品_网络营销和网上销售的区别

武汉掌上人才网_在线制作app下载_怎么上百度推广产品_网络营销和网上销售的区别

2024/12/23 10:07:12 来源:https://blog.csdn.net/qq_56517253/article/details/143206730  浏览:    关键词:武汉掌上人才网_在线制作app下载_怎么上百度推广产品_网络营销和网上销售的区别
武汉掌上人才网_在线制作app下载_怎么上百度推广产品_网络营销和网上销售的区别

刚学习了点Tomcat的知识,于是想在服务中监测下Tomcat的启动时间,优化一下试试,于是写了如下的代码:

@Component
@Slf4j
public class StartupTimeListener implements ApplicationListener<ApplicationStartedEvent> {private final long startTime;public StartupTimeListener() {startTime = System.currentTimeMillis();}@Overridepublic void onApplicationEvent(ApplicationStartedEvent event) {long endTime = System.currentTimeMillis();long duration = endTime - startTime;System.out.println("Tomcat启动消耗" + (endTime - startTime) + "毫秒");log.info("Tomcat启动耗时" + duration + "毫秒");}}

非常正常的代码,一个事件监听器,记录下开始时间和结束时间,最后打印出耗时,出现的问题是控制台完全没有日志信息,但是sout的输出被正常打印

image-20241024131224704

这个时候我也没多想,把Slf4j换成了Log4j,结果日志正常打印了

image-20241024114723882

这时候我不明白的一个点是,大家都是 info 级别的打印,如果限制了日志级别,凭什么 Log4j 可以而 Slf4j 就不行,后来发现这个问题我出现的太巧合了

Log4j 使用的时候是需要有配置文件初始化的,一般叫 log4j.properties ,没有这个配置文件的话根本不会打印任何数据,但这跟我的情况不一样,我是可以打印,所以我就去找这个配置文件。

image-20241024131455080

发现由于业务有加密的需要,因此引入了自定义的区块链依赖,其中包括了 log4j 依赖和 dzsjfcgpt-encode 依赖,后面的这个依赖里有关于 log4j 的配置文件,其中定义了 log4j 输出日志的最低级别为 DEBUG ,因此可以正常打印出 Info 级别的日志,那为什么 Slf4j 的日志没有被打印出来呢?

application.yaml中有这样的一个配置项:

logging:level:root: warn

这个配置项设置了 Slf4j 打印日志的最低等级,为了减少生产环境的日志信息,一般至少配置到 warn 级别,本地测试时没有修改导致日志没有输出到控制台。

总结问题出现的原因:

  • 某个依赖中引入了 log4j 的配置文件,且配置文件的日志级别比使用的要低
  • 配置文件中定义了 slf4j 的日志级别

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com