想设置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提供了多种日志实现,包括Log4j、Logback和Java内置的日志系统等。默认情况下,如果这些日志库在类路径中可用,MyBatis会自动选择其中一个。我们可以通过配置MyBatis的配置文件(mybatis-config.xml)...
非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html
在MyBatis中,你需要在类路径下提供log4j.properties或log4j.xml配置文件,设置所需的日志级别和输出目的地。 2. **SLF4J(Simple Logging Facade for Java)**:这是一个日志门面,允许用户在运行时插入所需的日志...
本文将详细介绍如何在IntelliJ IDEA中配置MyBatis日志打印,以便完整地输出SQL。 首先,我们需要了解MyBatis的日志系统。MyBatis支持多种日志实现,包括Log4j、Logback和Java内置的日志API。默认情况下,MyBatis会...
当日志级别设置为`DEBUG`时,Mybatis 将输出包括SQL语句和参数在内的详细信息。 在Mybatis的Mapper接口或XML配置文件中,我们通常会定义带有动态参数的SQL语句。例如: ```java public interface UserMapper { @...
本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** 在 MyBatis 中,我们通常会依赖日志框架如 Log4j、Logback 或 JDK 内置的日志系统。Log4j 以其强大的功能...
【标题】"mybatis查询入门(log4j控制台sql语句日记输出的)"涉及的知识点主要集中在MyBatis框架的基础使用以及如何通过Log4j在控制台输出SQL语句,以便于调试和优化数据库操作。MyBatis是一个轻量级的Java持久层框架...
但是,由于MyBatis的日志输出格式特殊(通常会分为两部分:“Preparing: SQL语句”和“Parameters: 参数列表”),直接读取这些日志往往不能得到可执行的SQL语句。因此,本文将详细介绍两种将MyBatis日志中的...
在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...
还原MyBatis输出的日志为完整的SQL语句。 把SQL日志里面的?替换为真正的参数值。 选中要还原的MyBatis日志,右键点击菜单Restore Sql,还原SQL语句. Java接口方法与Mapper xml文件互相跳转。 按钮作用 Text: 从文本...
总的来说,这个"Mybatis Generator 完整包包括日志和相关工具"为开发者提供了一个全面的解决方案,它不仅简化了代码生成的过程,还增强了调试能力和开发效率。通过配置和使用这个工具,开发者可以更专注于业务的实现...
同时,根据项目需求,还需要配置相应的日志系统配置文件,如`log4j.properties`、`logback.xml`等,以控制日志的输出级别、格式和目的地。 总之,理解和配置Struts2、Spring、Mybatis的日志系统对于开发、维护和...
MybatisLog是一款针对Mybatis框架的日志插件,Free-Mybatis则是它的扩展,两者结合为开发者提供了强大...通过详细的日志输出,开发者可以快速定位和解决问题,同时也能在日常开发中进行性能调优,确保系统的高效运行。
在本项目中,"springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出",开发者旨在构建一个基于SpringMVC、MyBatis、MySQL数据库,利用Log4jdbc记录SQL日志,并通过Jxls进行Excel数据导出的功能完善的...
在这个"springboot+mybatis+sql日志"的主题中,我们将探讨如何在Spring Boot应用中整合MyBatis,并通过Logback实现动态打印SQL日志,以及根据不同包名将日志输出到不同的文件。 首先,Spring Boot与MyBatis的集成...
总结来说,要在MyBatis+Spring框架中配置日志以显示SQL语句,主要步骤包括:选择并添加日志实现库(如SLF4J和Logback),配置日志级别和输出,设置MyBatis的`logImpl`属性为SLF4J,并确保在Spring配置中正确引用...
Spring Boot 集成 Mybatis 中如何显示日志的实现 在 Spring Boot 集成 Mybatis 的项目中,如果出现 SQL 语句执行问题,我们需要进行排查。这时就需要打印对应的 SQL 语句,那么该如何操作才能正常打印出对应的 SQL ...
在MyBatis的配置中,通常会指定日志实现类,如"MyBatis启动时控制台无限输出日志的原因及解决办法"中提到的"Logginginitializedusing‘classorg.apache.ibatis.logging.log4j.Log4jImpl'adapter",表示MyBatis使用了...
总结,通过启用MyBatis日志和利用Spring的AOP,我们可以轻松地在SpringBoot和SSM项目中获取并输出MyBatis执行的SQL语句。这个方法对于MySQL和Oracle数据库同样有效,有助于开发者更好地理解和优化数据库操作。在实际...