<后端日记> mybatis-plus日志输出
然而mybatis的这部分日志输出没有按照统一的pattern来,导致有很多日志被处理成了多行,会影响到日志的采集,类似这种。主要是因为我们的additivity设置了true,会导致继承了root以后,打印了两次,改为false即可。到这里相信小伙伴们明白了,对于不同的日志impl,底层其实会走不同的处理handler。经过这一阵的工作,已经把项目的基础设置完成的差不多了,接下来就是做集群的日志
今天回归一下后端工作(其实依然跟运维紧密相关)
经过这一阵的工作,已经把项目的基础设置完成的差不多了,接下来就是做集群的日志管理了
后面会继续更新运维笔记的日志部分
今天遇到的问题在于mybatis-plus的日志输出,受教于这篇文章:
spring boot mybatis 关闭 sql打印日志 springboot开启mybatis日志_mob6454cc76bc4a的技术博客_51CTO博客
需要修改日志的初衷在于,我们要做集群日志,需要统一日志的pattern
然而mybatis的这部分日志输出没有按照统一的pattern来,导致有很多日志被处理成了多行,会影响到日志的采集,类似这种
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15b67b] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@6761653 wrapping oracle.jdbc.driver.T4CConnection@1ea226b] will not be managed by Spring
JsqlParserCountOptimize sql=SELECT id,password,address,phone,name,email FROM T_USER_TEST3 WHERE name = ?
==> Preparing: SELECT COUNT(1) FROM T_USER_TEST3 WHERE name = ?
==> Parameters: zhangsan3(String)
<== Columns: COUNT(1)
<== Row: 0
因此我也是首先按照引文里说的流程做:
1. 增加如下配置,使得日志组件走slf4j
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl
2. 设置mybatisplus包下的日志级别为DEBUG;
<logger name="com.baomidou.mybatisplus" level="DEBUG" additivity="true"> <appender-ref ref="console" /> </logger>
但是做完这两步,之前的sql日志并没有预期输出
然后我就继续深挖博文里的内容,发现我们用的数据库和驱动不一样
我用的是mysql的驱动,所有实际执行过程中也会有一些不同
首先是使用StdOutImpl 然后根据断点,可以看到会走到BaseJdbcLogger
且执行的statementLog是StdOutImpl
到这里相信小伙伴们明白了,对于不同的日志impl,底层其实会走不同的处理handler
然后我们把配置改成Slf4jImpl:
mybatis-plus:
configuration:
# 使用 SLF4J 实现日志输出
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
继续走段点,可以看到这次走的链路是不太一样的:
看到这里,也就有答案了,如果使用hikara和mysql,我们只要在logback.xml里增加自己包mapper对应的配置就可以了:
<logger name="org.abc.mapper" level="DEBUG" additivity="true"> <appender-ref ref="console" /> </logger>
添加完,就可以看到sql日志被成功打印了:
但是奇怪,为什么有两条呢
主要是因为我们的additivity设置了true,会导致继承了root以后,打印了两次,改为false即可
<logger name="org.abc.mapper" level="DEBUG" additivity="false"> <appender-ref ref="console" /> </logger>
到这里,也就完成了sql的日志输出
总结:
如果你跟我一样,用了hikara + mysql,则完成mybatis日志跟随slf4j pattern输出需要两步
1. 在配置里做修改
mybatis-plus:
configuration:
# 使用 SLF4J 实现日志输出
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
2.将自己的mapper包添加到logback.xml里
<logger name="org.abc.mapper" level="DEBUG" additivity="false"> <appender-ref ref="console" /> </logger>
更多推荐
所有评论(0)