gorm的Logger及打印sql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gorm的Logger及打印sql相关的知识,希望对你有一定的参考价值。

参考技术A GORM 定义了这些日志级别:Silent、Error、Warn、Info

日志打印的sql语句格式如图:

Debug 单个操作,将当前操作的 log 级别调整为 logger.Info

debug源码

从源码中看出debug模式本质上也是采用会话模式指定了logger

参考 GORM 的 默认 logger 来定义您自己的 logger

Logger 需要实现以下接口,它接受 context ,所以你可以用它来追踪日志

我们可以自己实现日志的接口,然后在初始化连接的时候在配置gorm.Config里指定Logger为我们自己实现的日志。如果我们的日志有链路追踪,在实现的日志里也可以加入traceId,这样sql日志和我们应用的请求日志就可以统一链路追踪id

mybatis打印sql日志

   开始看网上的配置多数是这种格式

  

###显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.Java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

但是我试了很久都没有成功,

而且网上有的加上了

log4j.rootLogger=DEBUG, stdout

其实 加上这句话的话, 不需要加mybatis的那些配置,日志也能打印了,但是会有很多无用的日志或者我们不关心的日志都打印出来了。

最后有两种方法可以实现mybatis打印sql。

一、 mybatis自带的settings

<settings>  
       <setting name="logImpl" value="STDOUT_LOGGING" />  
  </settings>

只需要在mybatis-config.xmi中加入这句话即可;(configuration下的标签有顺序,否则会报错:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
 objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

二、利用LOG4J

在log4j.properties中

log4j.logger.com.demo.mapper=DEBUG

其实只要在你的dao层,也就是mapper的接口层日志等级设置为DEBUG即可;


以上是关于gorm的Logger及打印sql的主要内容,如果未能解决你的问题,请参考以下文章

gorm SetLogger(log logger)方法

怎么配置log4j 打印出sql语句

mybatis打印sql日志

mybatis 打印SQL语句

mybatis怎么配置log4j打印出sql语句

logback如何配置来打印出mybayis中 sql执行后返回的结果 我已经配置了<logger