详解druid打印SQL⽇志
在看本⽂之前你需要会使⽤logback或者log4j2基本配置,可以参看前期⽂章
1、druid官⽅出的⽅案,本⽂是在官⽅⽅案上进⼀步优化,
2、在使⽤mybatis作为ORM组件,打印SQL⽇志需要指定xxxx.Mapper⽇志级别是DEBUG级别,因为多服务下包名是不⼀样的,这样做是⽐较不⽅便⽆法做到通⽤。
3、官⽅的描述中需要开启⽇志打印
# 配置⽇志输出
spring.datasource.druid.abled=true
标红的是不需要打印,查看源码,com.alibaba.druid.filter.logging.Slf4jLogFilter
发现默认情况下都是true配置,因此我们需要将不需要打印的⽇志改为false
源码
if (statementPrepareAfterLogEnable && isStatementLogEnabled()) {
statementLog("{conn-" + ConnectionProxy().getId() + ", pstmt-" + Id()
log4j2打印sql语句+ "} created. " + Sql());
}
我们将statementPrepareAfterLogEnable  配置为false即可
spring.datasource.druid.abled=true
spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false
⽇志输出如下,已经没有created.
同理,closed也是如此配置,
#输出sql⽇志
spring.datasource.druid.abled=true
spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false
spring.datasource.druid.filter.slf4j.statement-close-after-log-enabled=false
最终输出结果
关于sql换⾏的问题,我DEBUG跟踪了下,发现最原始的SQL来源于
具体追踪到mybatis的源码
org.apache.ibatis.mapping.MappedStatement#getBoundSql
org.apache.ltags.DynamicSqlSource#getBoundSql
这⾥就不在深究,druid官⽅提供的 statementLogSqlPrettyFormat 变量,看样⼦是⽇志格式化,但是这个变量并没有被使⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。