溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MyBatis日志

發(fā)布時(shí)間:2020-08-09 10:06:06 來源:網(wǎng)絡(luò) 閱讀:1509 作者:手不要亂摸 欄目:開發(fā)技術(shù)

Logging

MyBatis通過內(nèi)部的日志工廠提供日志信息。內(nèi)部的日志工廠委托下列之一的日志工具來具體實(shí)現(xiàn)日志:

  • SLF4J

  • Apache Commons Logging

  • Log4j 2

  • Log4j

  • JDK logging

具體使用哪個(gè)日志工具是由Log Factory在運(yùn)行時(shí)決定的。MyBatis log factory把他找到 第一個(gè)日志工具作為它的日志實(shí)現(xiàn)(查找的順序就是上面列出的順序)。如果MyBatis一個(gè)都沒有找到,那么MyBatis的日志輸出將不可用。

許多環(huán)境把Commons Logging作為應(yīng)用服務(wù)器類路徑的一部分(典型的例子是Tomcat和WebSphere)。在這種環(huán)境中,MyBatis使用Commons Logging作為日志實(shí)現(xiàn)。在像WebSphere這種環(huán)境下,你的Log4j配置將被忽略,因?yàn)樗约禾峁┝薈ommons Logging的實(shí)現(xiàn)。這是非常令人沮喪的,因?yàn)镸yBatis忽略了你的Log4j配置(事實(shí)上,MyBatis忽略你的Log4j配置是因?yàn)樵谶@樣的環(huán)境下它使用Commons Logging)。如果你的應(yīng)用程序運(yùn)行在classpath已經(jīng)包含Commons Logging的環(huán)境下,而你又想用其它的日志實(shí)現(xiàn),這種情況下,你可以在mybatis-config.xml中添加如下配置已選擇一個(gè)不同的日志實(shí)現(xiàn):

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

logImpl屬性的有效值是SLF4J, LOG4J, LOG4J2, JDK_LOGGING, COMMONS_LOGGING, STDOUT_LOGGING, NO_LOGGING或者是一個(gè)實(shí)現(xiàn)了org.apache.ibatis.logging.Log接口并且提供一個(gè)字符串作為形參的構(gòu)造方法的的類的完全限定名。

當(dāng)然,你也可以選擇實(shí)現(xiàn)下列方法:

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();

這些方法只是用于切換請(qǐng)求日志的具體實(shí)現(xiàn),前提是這些實(shí)現(xiàn)在classpath中都是可用的。比如,你選擇Log4j,但是Log4j在運(yùn)行時(shí)不可用,那么MyBatis將忽略到Log4j的日志請(qǐng)求,然后按照正常的邏輯重新選擇日志實(shí)現(xiàn)。

SLF4J, Apache Commons Logging, Apache Log4J and the JDK Logging這些API的使用不在本文檔的講解范圍內(nèi),但是下面有一個(gè)例子來講解如何使用。如果你想更多的了解這些日志框架,你可以從下列地址得到更多信息:

  • SLF4J

  • Apache Commons Logging

  • Apache Log4j 1.x and 2.x

  • JDK Logging API

Logging Configuration

為了查看MyBatis的日志語句,你能夠?qū)⑷罩敬蛟谝粋€(gè)包、一個(gè)mapper的完全限定類名、一個(gè)命名空間或者一個(gè)完全限定的語句名。

下面我們將展示怎樣用Log4j來實(shí)現(xiàn)。配置日志是一件很簡(jiǎn)單的事情,只需引入一個(gè)或多個(gè)配置文件(比如:log4j.properties)和一些Jar包(比如:log4j.jar)即可。下面的示例配置就展示了如何使用log4j來作為日志服務(wù),這在第2步。

Step 1: Add the Log4J JAR file

因?yàn)橐褂肔og4j,所以我們必須確保jar包在我們的應(yīng)用程序中是可用的,為了使用Log4j,你需要添加jar文件到你的應(yīng)用程序classpath中。

Step 2: Configure Log4J

配置log4j是很簡(jiǎn)單的,假如你希望日志對(duì)于下面這個(gè)Mapper是可用的:

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

在classpath中創(chuàng)建一個(gè)名字叫l(wèi)og4j.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

上面這段配置將導(dǎo)致log4j報(bào)告org.mybatis.example.BlogMapper的詳細(xì)日志和應(yīng)用程序中其它類中ERROR級(jí)別的日志。

如果你只想查看特定的語句的日志,而不是整個(gè)Mapper文件,那么你只需要這樣配置:

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

相反,你可能想要記錄所以Mapper的日志,那么你需要這樣配置:

log4j.logger.org.mybatis.example=TRACE

這里有個(gè)問題,這樣配置的話中會(huì)有大量的結(jié)果集包含在日志中,而事實(shí)上你可能只是想看SQL語句而不是返回的結(jié)果集。出于這樣的考慮,SQL語句的日志級(jí)別是DEBUG,而結(jié)果集的日志級(jí)別是TRACE,所以萬一你只想看SQL語句而不關(guān)心結(jié)果集的話,你可以將級(jí)別設(shè)置誒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>

這種情況下,你可以在命名空間上添加一個(gè)logger來記錄整個(gè)xml的日志了

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

或者是某個(gè)特定的SQL語句

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

是的,正如你看到的那樣,在mapper接口和在mapper xml文件上配置日志是沒有區(qū)別的。


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


MyBatis日志

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI