SpringBoot工程集成了Mybatis和RocketMQ,也集成了Log4j,项目中自己的日志都可以通过log4j来管理,日志打印通过通过日志级别可以管理,一直很正常。 

后来项目上线正常稳定运行一段时间后,要求只打印ERROR级别日志,其他级别日志都不打印。 这不是小意思吗? 直接修改log4j2.xml配置文件中的日志级别为ERROR,重启应用。

发现工程内自己写的日志已经不在打印除了ERROR级别之外的日志了,但是Mybatis的日志还是正常打印,而且是DEBUG级别,而且RocketMq也会打印WARN告警日志。

这就很奇怪了,然后尝试在lo4j2.xml中添加如下配置:

<logger name="RocketmqClient" level="ERROR"/>
<logger name="RocketmqRemoting" level="ERROR"/>
<logger name="com.xxx.dao" level="ERROR"/>
<logger name="com.xxx.mapper" level="ERROR"/>
<logger name="java.sql.Statement" level="ERROR"/>
<logger name="com.ibatis" level="ERROR"/>
<logger name="java.sql.Connection" level="ERROR"/>
<logger name="java.sql.PreparedStatement" level="ERROR"/>
<logger name="java.sql.ResultSet" level="ERROR"/>

发现根本不管用。 后来查了一些博客,有些让改代码的,有些让加新的日志配置文件的,尝试了都不行。 最后尝试在application.properties中添加如下两行配置,问题解决。

#自己项目中对应dao层的包路径
logging.level.com.xxx.dao=error
#RocketmqClient是RocketMq中日志打印的标识
logging.level.RocketmqClient=error

加上之后,重启应用,问题解决。 

后记问题:

1、为什么会这样?

2、为什么同样的springboot+mybatis工程默认也不打印debug的sql日志?

3、为什么log4j2.xml控制不住mybatis和rocketMQ的日志打印?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐