`
234390216
  • 浏览: 10233002 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462624
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775519
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398365
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395022
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679984
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530892
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183946
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467930
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151396
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68153
社区版块
存档分类
最新评论

Mybatis指定日志输出实现

阅读更多

10             Mybatis指定日志输出实现

         在程序开发过程中,为了调试方便、了解程序的运行过程,进行必要的日志输出总是免不了的。对于使用Mybatis而言,我们常见的需求是希望可以在日志中打印出Mybatis执行过程中进行数据库操作的SQL语句及其传递的参数。Mybatis的日志输出是统一管理的,它有自己的日志接口,然后在需要进行日志输出的时候使用统一的API进行日志输出。这个统一的接口是org.apache.ibatis.logging.LogMybatis分别基于常用的日志输出工具给出了对应的实现,比如LOG4JSLF4J等。默认情况下Mybatisorg.apache.ibatis.logging.LogFactory会按照以下顺序依次判断当前程序下可以使用哪种日志实现,直到找到为止,如果一个实现都没有那就是最后的noLogging了,将采用NoLoggingImpl实现。

 

  static {

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useSlf4jLogging();

      }

    });

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useCommonsLogging();

      }

    });

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useLog4J2Logging();

      }

    });

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useLog4JLogging();

      }

    });

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useJdkLogging();

      }

    });

    tryImplementation(new Runnable() {

      @Override

      public void run() {

        useNoLogging();

      }

    });

  }

 

         上述的默认机制有的时候可能不能满足你的需求,比如有的时候可能你是想使用Commons-Logging,但是因为类路径中包含SLF4J的包,结果Mybatis就自动使用了SLF4J了,所以如果有自己明确想使用的日志实现时,我们应该自己来指定日志实现,这可以通过在Mybatis的全局配置文件中通过如下进行配置,这里的value是一个日志实现的别名,可选值有SLF4JCOMMONS_LOGGINGLOG4JLOG4J2JDK_LOGGINGSTDOUT_LOGGINGNO_LOGGING,如果希望使用的日志输出实现是Mybatis自身没有实现的,我们也可以自己来实现,只需要自己定义一个类实现Mybatisorg.apache.ibatis.logging.Log接口,然后在下面的配置中把value属性改为自己的实现类的全路径名称即可。

      <setting name="logImpl" value="LOG4J"/>

         完整配置文件大概是如下这样。

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE configuration 

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 

  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 

<configuration> 

    <properties resource="jdbc.properties"/> 

   <settings>

      <setting name="logImpl" value="LOG4J"/>

   </settings>

    <environments default="development"> 

        <environment id="development"> 

            <transactionManager type="JDBC" /> 

            <dataSource type="POOLED"> 

                <property name="driver" value="${jdbc.driver}" /> 

                <property name="url" value="${jdbc.url}" /> 

                <property name="username" value="${jdbc.username}" /> 

                <property name="password" value="${jdbc.password}" /> 

            </dataSource>   

        </environment> 

    </environments> 

    <mappers> 

 

    </mappers> 

</configuration> 

 

         Mybatis的日志输出可以输出数据库连接的获取、释放信息;可以输出执行的SQL语句及其传递的预编译参数信息;可以输出查询结果集信息(需要是trace输出级别,其它的是DEBUG级别);Mybatis的日志输出实现是通过JDK的动态代理来实现的,针对Connection的日志输出提供了ConnectionLogger;针对Statement提供了StatementLogger;针对PreparedStatement提供了PreparedStatementLogger;针对ResultSet提供了ResultSetLogger,这些Logger类都是实现了JDKInvocationHandler类的。

 

(注:本文是基于Mybatis3.3.1所写,写于2017122日星期日)

 

 

 

0
0
分享到:
评论

相关推荐

    mybatis打印日志实例

    我们可以通过配置MyBatis的配置文件(mybatis-config.xml)来指定日志实现。 在`mybatis-config.xml`中,可以添加以下代码来启用日志: ```xml ... ... ... ``` 这里的`value`属性可以设置为`STDOUT_...

    【MyBatis入门】—— MyBatis日志

    2. **配置日志级别**:根据需求,设置日志级别,例如在log4j.properties中写入`log4j.rootLogger=DEBUG, stdout`,这会将所有级别的日志输出到控制台。 3. **配置输出目标**:除了控制台,日志还可以输出到文件、...

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

    在 MyBatis 的配置文件 `mybatis-config.xml` 中,我们需要指定日志工厂为 Log4j: ```xml ... ... ... ``` 4. **使用日志** 在 MyBatis 的映射文件(Mapper XML)和 Service 类中,我们可以直接...

    idea mybatislog 日志打印 打印完整sql

    如果你的项目中没有明确指定日志框架,MyBatis将无法打印SQL。因此,确保项目中包含一个有效的日志实现库是第一步。 1. **配置日志框架**: - **Log4j**: 在项目中添加log4j的依赖,并在`log4j.properties`或`log4...

    springboot+mybatis+log4j2

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

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

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

    mybatis乱码的解决方法

    5. **日志配置**:根据日志输出的需求,如使用Log4j或SLF4J,配置相应的日志编码参数,确保日志打印的正确性。 6. **i18n配置**:对于国际化文件,如properties或xml格式,确保文件本身和读取方式都使用了正确的...

    axis1.4+mybatis3+spring实现webservice

    在 Websphere 中配置 Log4j,通常需要解决类加载器问题,确保 Log4j 配置文件的正确加载,以及配置适当的 Appender 来将日志输出到指定的位置。 在项目文件“webserviceDemo”中,可能包含了以下内容:配置文件(如...

    springmvc3+spring+mybatis3整合项目 注解实现

    在项目运行过程中,开发者可以利用IDE的调试工具,配合断点和日志输出,对增、删、改、查的操作进行验证,确保代码的正确性。同时,经过严格的测试确保项目可以正常运行,体现了项目的可靠性。 总的来说,这个整合...

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

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

    mybatis配置文件以及日志文件Log4j

    2. Appender:指定日志输出的目标,如ConsoleAppender(控制台)、FileAppender(文件)或SMTPAppender(邮件)。 3. Layout:设置日志输出的格式,如PatternLayout(自定义模式)或SimpleLayout(简单格式)。 4. ...

    java中实现mybatis访问数据库

    - **log4j2.xml**:MyBatis的日志配置文件,用于控制日志输出级别和格式。 ```xml [%t] %-5level %logger{36} - %msg%n"/&gt; ``` #### 四、工具类实现 - **MybatisUtil**:提供获取`...

    mybatis打印SQL的log4j

    4. **运行并查看日志**:完成以上步骤后,当MyBatis执行SQL时,相应的SQL语句以及执行信息将会按照Log4j的配置输出到控制台或其他指定位置。 除了基础配置,我们还可以根据需求调整日志级别,例如在生产环境中可能...

    jeecg-mybatis-framework项目实例

    例如,用户表的Mapper可能包括添加用户、删除用户、更新用户信息等方法,对应的XML文件会详细指定这些操作的SQL语句。 除此之外,项目实例可能还包括Service层和Controller层的实现。Service层是业务逻辑层,它封装...

    mybatis_log_plugin_2020idea.jar

    - 配置日志插件:在IDEA的设置中找到MyBatis Log Plugin的配置项,根据实际项目需求选择合适的日志级别(如DEBUG、INFO等),并配置日志输出的目标(控制台、文件等)。 - 使用插件:运行项目后,当MyBatis执行SQL...

    mybatis打印出sql

    Log4j-1.2.16.jar是Log4j的一个版本,包含了Log4j的API和实现,用于处理日志输出。 配置MyBatis打印SQL的关键在于正确配置Log4j以及MyBatis的SqlSessionFactory。首先,我们需要使用提供的`log4j.properties`文件...

    打log4j日志-ibatis的sql输出

    这里,`logImpl`设置指定了日志实现的类型,我们将其设置为"LOG4J",表示使用Log4j进行日志记录。然后,确保你的应用已经正确地引入了Log4j的依赖,并且配置了`log4j.properties`或`log4j.xml`。 在`log4j....

    尚硅谷 Java 技术之 MyBatis1

    在后续章节中,通常会讲解如何创建测试表、配置 MyBatis 的核心配置文件(mybatis-config.xml)、Mapper 映射文件,以及编写 Java 代码实现 CRUD 操作等。这些内容是 MyBatis 教程的典型步骤,旨在帮助初学者快速...

    MyBatis 分页插件实现

    在给定的文件列表中,`log4j.properties` 是日志配置文件,通常用于配置日志输出级别、格式和位置,确保在开发过程中获取合适的日志信息,以便于调试和问题排查。`mybatis-config.xml` 是MyBatis的全局配置文件,...

    mybatis 帮助文档

    通过配置日志框架,开发者可以控制日志级别和输出,这对于调试和性能调优非常有帮助。 总的来说,MyBatis是一个功能强大且灵活的持久层框架,它不仅简化了JDBC编程的复杂性,还提供了丰富的特性,如动态SQL、高级...

Global site tag (gtag.js) - Google Analytics