想设置mybatis输出sql语句来调试,但又懒得看它的源码来获得如何输出sql日志,于是网上搜,试啊试,没一个靠谱的。。。只能看源码了。。。
因为mybatis是一个开源的框架,因此的它的日志不能硬编码成log4j之类的具体日志框架,鬼知道你到底用不用log4j,所以mybatis默认用的日志门面框架slf4j,具体用什么日志由客户方自己决定。
package org.apache.ibatis.logging;
public class LogFactory {
private static Constructor<? extends Log> logConstructor;
static {
tryImplementation(new Runnable() {
public void run() {
useSlf4jLogging();
}
});
tryImplementation(new Runnable() {
public void run() {
useCommonsLogging();
}
});
tryImplementation(new Runnable() {
public void run() {
useLog4JLogging();
}
});
tryImplementation(new Runnable() {
public void run() {
useJdkLogging();
}
});
tryImplementation(new Runnable() {
public void run() {
useNoLogging();
}
});
}
...
}
我用的是log4j,因此我需要slf4j-api、slf4j-log4j、log4j这3个日志jar包。slf4j-log4j就是告诉slf4j我用的是log4j。
mybatis跟sql相关的日志类如下:
org.apache.ibatis.logging.jdbc.ConnectionLogger
org.apache.ibatis.logging.jdbc.PreparedStatementLogger
org.apache.ibatis.logging.jdbc.ResultSetLogger
org.apache.ibatis.logging.jdbc.StatementLogger
看这4个类的名字就能知道对应的是哪些sql日志,这4个类里都有这结构:
if (log.isDebugEnabled()) {
log.debug("xxxxxxxxx");
}
因此,只有把日志级别改为debug才能输出日志。贴一下我的配置:
<appender name="sqlappender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="/home/logs/sql.log" />
<param name="append" value="true" />
<param name="encoding" value="UTF-8" />
<param name="threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %m%n" />
</layout>
</appender>
<logger name="java.sql.Connection">
<level value="debug" />
<appender-ref ref="sqlappender" />
</logger>
<logger name="java.sql.Statement">
<level value="debug" />
<appender-ref ref="sqlappender" />
</logger>
<logger name="java.sql.CallableStatement">
<level value="debug" />
<appender-ref ref="sqlappender" />
</logger>
<logger name="java.sql.PreparedStatement">
<level value="debug" />
<appender-ref ref="sqlappender" />
</logger>
这样日志就能输出了。
分享到:
相关推荐
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html
mybatis,log4j打印日志到后台和文件
还原MyBatis输出的日志为完整的SQL语句。 把SQL日志里面的?替换为真正的参数值。 选中要还原的MyBatis日志,右键点击菜单Restore Sql,还原SQL语句. Java接口方法与Mapper xml文件互相跳转。 按钮作用 Text: 从文本...
Mybatis Log(自动填充sql参数打印到控制台)
项目使用日志框架实现sql日志完整输出,并使用springmvc和jxls分别实现excel导出
NULL 博文链接:https://wangxuehui.iteye.com/blog/1636946
springboot整合mybatis和logback 动态打印sql日志 不同包下的日志不同文件输出
Mybatis日志插件BatsLog @ [toc]分享一个免费的mybatis日志插件主要功能选择SQL格式化输出SQL自动监听读取打印SQL日志,并格式化输出直接复制格式化后SQL到副本(可以自己设置快捷键)支持多种数据库(MySQL,Oracle...
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
主要介绍了springboot+mybatis配置控制台打印sql日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
mybatis log plugin离线版本支持idea2020.1把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt...
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
jeecg-mybatis-framework项目实例
MyBatis Log Plugin 这款插件是直接将Mybatis执行的sql脚本显示出来,把 mybatis 输出的sql日志还原成完整的sql语句 1、本地安装 2、Tools 》mybatis_log_plugin
2021版idea安装MyBatis Log Plugin不可用解决方案,idea安装插件2021idea-mybatis_log_plugin可以打印日志mysql
mybatis log plugin离线版本支持idea2020.1把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt...
4、mybatis使用log4j.xml和log4j.properties两种日志输出方式的配置 5、部分sql文件参考样例(比如if的另类用户,id in('a','b')转换为(and id =? or id =? or id =? ... ) 总之 抛砖引玉) 6、文件中有我的联系方式,...
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 解压后,通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 ...
主要介绍了MyBatis启动时控制台无限输出日志的原因及解决办法的相关资料,需要的朋友可以参考下