MyBatis日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Logging

MyBatis通过内部的日志工厂提供日志信息。内部的日志工厂委托下列之一的日志工具来具体实现日志:

  • SLF4J

  • Apache Commons Logging

  • Log4j 2

  • Log4j

  • JDK logging

具体使用哪个日志工具是由Log Factory在运行时决定的。MyBatis log factory把他找到 第一个日志工具作为它的日志实现(查找的顺序就是上面列出的顺序)。如果MyBatis一个都没有找到,那么MyBatis的日志输出将不可用。

许多环境把Commons Logging作为应用服务器类路径的一部分(典型的例子是Tomcat和WebSphere)。在这种环境中,MyBatis使用Commons Logging作为日志实现。在像WebSphere这种环境下,你的Log4j配置将被忽略,因为它自己提供了Commons Logging的实现。这是非常令人沮丧的,因为MyBatis忽略了你的Log4j配置(事实上,MyBatis忽略你的Log4j配置是因为在这样的环境下它使用Commons Logging)。如果你的应用程序运行在classpath已经包含Commons Logging的环境下,而你又想用其它的日志实现,这种情况下,你可以在mybatis-config.xml中添加如下配置已选择一个不同的日志实现:

<configuration>
  <settings>
    ...    
    <setting name="logImpl" value="LOG4J"/>
    ...  
  </settings>
</configuration>

logImpl属性的有效值是SLF4J, LOG4J, LOG4J2, JDK_LOGGING, COMMONS_LOGGING, STDOUT_LOGGING, NO_LOGGING或者是一个实现了org.apache.ibatis.logging.Log接口并且提供一个字符串作为形参的构造方法的的类的完全限定名。

当然,你也可以选择实现下列方法:

org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useLog4J2Logging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging();

这些方法只是用于切换请求日志的具体实现,前提是这些实现在classpath中都是可用的。比如,你选择Log4j,但是Log4j在运行时不可用,那么MyBatis将忽略到Log4j的日志请求,然后按照正常的逻辑重新选择日志实现。

SLF4J, Apache Commons Logging, Apache Log4J and the JDK Logging这些API的使用不在本文档的讲解范围内,但是下面有一个例子来讲解如何使用。如果你想更多的了解这些日志框架,你可以从下列地址得到更多信息:

Logging Configuration

为了查看MyBatis的日志语句,你能够将日志打在一个包、一个mapper的完全限定类名、一个命名空间或者一个完全限定的语句名。

下面我们将展示怎样用Log4j来实现。配置日志是一件很简单的事情,只需引入一个或多个配置文件(比如:log4j.properties)和一些Jar包(比如:log4j.jar)即可。下面的示例配置就展示了如何使用log4j来作为日志服务,这在第2步。

Step 1: Add the Log4J JAR file

因为要使用Log4j,所以我们必须确保jar包在我们的应用程序中是可用的,为了使用Log4j,你需要添加jar文件到你的应用程序classpath中。

Step 2: Configure Log4J

配置log4j是很简单的,假如你希望日志对于下面这个Mapper是可用的:

package org.mybatis.example;public interface BlogMapper {
  @Select("SELECT * FROM blog WHERE id = #{id}")
  Blog selectBlog(int id);
}

在classpath中创建一个名字叫log4j.properties的文件:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

上面这段配置将导致log4j报告org.mybatis.example.BlogMapper的详细日志和应用程序中其它类中ERROR级别的日志。

如果你只想查看特定的语句的日志,而不是整个Mapper文件,那么你只需要这样配置:

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

相反,你可能想要记录所以Mapper的日志,那么你需要这样配置:

log4j.logger.org.mybatis.example=TRACE

这里有个问题,这样配置的话中会有大量的结果集包含在日志中,而事实上你可能只是想看SQL语句而不是返回的结果集。出于这样的考虑,SQL语句的日志级别是DEBUG,而结果集的日志级别是TRACE,所以万一你只想看SQL语句而不关心结果集的话,你可以将级别设置诶DEBUG。

log4j.logger.org.mybatis.example=DEBUG

但是,如果你不是用mapper接口,而是用mapper xml文件呢?就像下面这样:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "
 <mapper namespace="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}  
  </select>
 </mapper>

这种情况下,你可以在命名空间上添加一个logger来记录整个xml的日志了

log4j.logger.org.mybatis.example.BlogMapper=TRACE

或者是某个特定的SQL语句

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

是的,正如你看到的那样,在mapper接口和在mapper xml文件上配置日志是没有区别的。


原文:http://www.mybatis.org/mybatis-3/logging.html


wKiom1bk6cbh9PpKAABWxcsNgqI167.png

本文转自   手不要乱摸  51CTO博客,原文链接:http://blog.51cto.com/5880861/1750493

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
SQL Java 关系型数据库
SpringBoot 系列之 MyBatis输出SQL日志
这篇文章介绍了如何在SpringBoot项目中通过MyBatis配置输出SQL日志,具体方法是在`application.yml`或`application.properties`中设置MyBatis的日志实现为`org.apache.ibatis.logging.stdout.StdOutImpl`来直接在控制台打印SQL日志。
SpringBoot 系列之 MyBatis输出SQL日志
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。
|
SQL 监控 Java
IDEA插件-Mybatis Log Free日志替换
MyBatis Log Free 是一个免费的用于在 IntelliJ IDEA 中显示 MyBatis 日志的插件。它可以帮助您更方便地查看和分析 MyBatis 的 SQL 执行情况,以及定位潜在的性能问题,提高开发效率。
1165 0
IDEA插件-Mybatis Log Free日志替换
|
Java 数据库连接 数据库
Spring日志完结篇,MyBatis操作数据库(入门)
Spring日志完结篇,MyBatis操作数据库(入门)
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
SQL Java 数据库连接
IDEA插件(MyBatis Log Free)
IDEA插件(MyBatis Log Free)
1113 0
|
SQL Java 数据库连接
Mybatis日志SQL解析
Mybatis日志SQL解析
193 0
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1017 1
Spring boot 使用mybatis generator 自动生成代码插件
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
700 0
|
10月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
460 2