配置slf4j+logback无法打印MySQL SQL查询语句该如何修正
配置修正方案
1. 调整logback-test.xml的日志级别配置
你当前配置中org.springframework.jdbc的日志级别为info,而Spring JdbcTemplate的SQL执行语句默认在debug级别输出,需调整该配置;如果需要打印SQL的入参值,可额外添加StatementCreatorUtils的trace级别配置:
<!-- 原有info改为debug --> <logger name="org.springframework.jdbc" level="debug"/> <!-- 可选:打印SQL参数值 --> <logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="trace"/> <logger name="com.mysql" level="debug"/> <logger name="ru.javawebinar.topjava" level="debug"/>
2. 补全MySQL连接URL的日志参数
仅指定logger=Slf4JLogger不会触发驱动输出SQL,需要额外开启SQL profiling配置,修改连接URL如下:
jdbc:mysql://localhost:3306/topjava?logger=Slf4JLogger&profileSQL=true
如果你的URL是写在XML格式的Spring配置文件中,需要把&转义为&:
jdbc:mysql://localhost:3306/topjava?logger=Slf4JLogger&profileSQL=true
可选优化(针对MySQL 8.x驱动)
如果你使用的是MySQL 8.x版本的Connector/J驱动,日志包路径为com.mysql.cj,可补充对应日志配置:
<logger name="com.mysql.cj" level="debug"/>
完成上述修改后重新运行测试,即可看到JdbcTemplate输出的SQL语句、入参,以及MySQL驱动返回的执行明细日志。
内容的提问来源于stack exchange,提问作者ko4evneg
相关产品推荐
相关产品推荐

