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的主要内容,如果未能解决你的问题,请参考以下文章