`
codecook
  • 浏览: 42279 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mybatis输出日志

阅读更多
想设置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解析工具

    该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间

    mybatis打印日志实例

    首先,MyBatis提供了多种日志实现,包括Log4j、Logback和Java内置的日志系统等。默认情况下,如果这些日志库在类路径中可用,MyBatis会自动选择其中一个。我们可以通过配置MyBatis的配置文件(mybatis-config.xml)...

    mybatis 日志 sql参数替换工具

    非常好用的,就是你们所要的 Mybatis日志参数快速替换占位符 sql参数替换工具html

    【MyBatis入门】—— MyBatis日志

    在MyBatis中,你需要在类路径下提供log4j.properties或log4j.xml配置文件,设置所需的日志级别和输出目的地。 2. **SLF4J(Simple Logging Facade for Java)**:这是一个日志门面,允许用户在运行时插入所需的日志...

    idea mybatislog 日志打印 打印完整sql

    本文将详细介绍如何在IntelliJ IDEA中配置MyBatis日志打印,以便完整地输出SQL。 首先,我们需要了解MyBatis的日志系统。MyBatis支持多种日志实现,包括Log4j、Logback和Java内置的日志API。默认情况下,MyBatis会...

    Mybatis Log(自动填充sql参数打印到控制台)

    当日志级别设置为`DEBUG`时,Mybatis 将输出包括SQL语句和参数在内的详细信息。 在Mybatis的Mapper接口或XML配置文件中,我们通常会定义带有动态参数的SQL语句。例如: ```java public interface UserMapper { @...

    mybatis,log4j打印日志到后台和文件

    本文将深入探讨如何在 MyBatis 中配置 Log4j,实现日志同时输出到后台控制台和文件。 1. **日志框架集成** 在 MyBatis 中,我们通常会依赖日志框架如 Log4j、Logback 或 JDK 内置的日志系统。Log4j 以其强大的功能...

    mybatis查询入门(log4j控制台sql语句日记输出的)

    【标题】"mybatis查询入门(log4j控制台sql语句日记输出的)"涉及的知识点主要集中在MyBatis框架的基础使用以及如何通过Log4j在控制台输出SQL语句,以便于调试和优化数据库操作。MyBatis是一个轻量级的Java持久层框架...

    如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL.doc

    但是,由于MyBatis的日志输出格式特殊(通常会分为两部分:“Preparing: SQL语句”和“Parameters: 参数列表”),直接读取这些日志往往不能得到可执行的SQL语句。因此,本文将详细介绍两种将MyBatis日志中的...

    springboot+mybatis+log4j2

    在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...

    mybatis-log-plugin:将Mybatis SQL日志还原到原始的整个可执行SQL

    还原MyBatis输出的日志为完整的SQL语句。 把SQL日志里面的?替换为真正的参数值。 选中要还原的MyBatis日志,右键点击菜单Restore Sql,还原SQL语句. Java接口方法与Mapper xml文件互相跳转。 按钮作用 Text: 从文本...

    mybatis generator 完整包包括日志和相关工具

    总的来说,这个"Mybatis Generator 完整包包括日志和相关工具"为开发者提供了一个全面的解决方案,它不仅简化了代码生成的过程,还增强了调试能力和开发效率。通过配置和使用这个工具,开发者可以更专注于业务的实现...

    Struts2、Spring、Mybatis日志jar包

    同时,根据项目需求,还需要配置相应的日志系统配置文件,如`log4j.properties`、`logback.xml`等,以控制日志的输出级别、格式和目的地。 总之,理解和配置Struts2、Spring、Mybatis的日志系统对于开发、维护和...

    # MybatisLog sql日志 Free-Mybatis 插件

    MybatisLog是一款针对Mybatis框架的日志插件,Free-Mybatis则是它的扩展,两者结合为开发者提供了强大...通过详细的日志输出,开发者可以快速定位和解决问题,同时也能在日常开发中进行性能调优,确保系统的高效运行。

    springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出

    在本项目中,"springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出",开发者旨在构建一个基于SpringMVC、MyBatis、MySQL数据库,利用Log4jdbc记录SQL日志,并通过Jxls进行Excel数据导出的功能完善的...

    springboot+mybatis+sql日志

    在这个"springboot+mybatis+sql日志"的主题中,我们将探讨如何在Spring Boot应用中整合MyBatis,并通过Logback实现动态打印SQL日志,以及根据不同包名将日志输出到不同的文件。 首先,Spring Boot与MyBatis的集成...

    mybatis+spring 框架中配置日志中显示sql语句

    总结来说,要在MyBatis+Spring框架中配置日志以显示SQL语句,主要步骤包括:选择并添加日志实现库(如SLF4J和Logback),配置日志级别和输出,设置MyBatis的`logImpl`属性为SLF4J,并确保在Spring配置中正确引用...

    Spring Boot集成Mybatis中如何显示日志的实现

    Spring Boot 集成 Mybatis 中如何显示日志的实现 在 Spring Boot 集成 Mybatis 的项目中,如果出现 SQL 语句执行问题,我们需要进行排查。这时就需要打印对应的 SQL 语句,那么该如何操作才能正常打印出对应的 SQL ...

    MyBatis启动时控制台无限输出日志的原因及解决办法

    在MyBatis的配置中,通常会指定日志实现类,如"MyBatis启动时控制台无限输出日志的原因及解决办法"中提到的"Logginginitializedusing‘classorg.apache.ibatis.logging.log4j.Log4jImpl'adapter",表示MyBatis使用了...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    总结,通过启用MyBatis日志和利用Spring的AOP,我们可以轻松地在SpringBoot和SSM项目中获取并输出MyBatis执行的SQL语句。这个方法对于MySQL和Oracle数据库同样有效,有助于开发者更好地理解和优化数据库操作。在实际...

Global site tag (gtag.js) - Google Analytics