mybatis 不生效 参数_Mybatis-日志配置
日志
Mybatis 的內(nèi)置日志工廠提供日志功能,內(nèi)置日志工廠將日志交給以下其中一種工具作代理:
- SLF4J
- Apache Commons Logging
- Log4j 2
- Log4j
- JDK logging
MyBatis 內(nèi)置日志工廠基于運(yùn)行時(shí)自省機(jī)制選擇合適的日志工具。它會(huì)使用第一個(gè)查找得到的工具(按上文列舉的順序查找)。如果一個(gè)都未找到,日志功能就會(huì)被禁用。
不少應(yīng)用服務(wù)器(如 Tomcat 和 WebShpere)的類路徑中已經(jīng)包含 Commons Logging,所以在這種配置環(huán)境下的 MyBatis 會(huì)把它作為日志工具,記住這點(diǎn)非常重要。這將意味著,在諸如 WebSphere 的環(huán)境中,它提供了 Commons Logging 的私有實(shí)現(xiàn),你的 Log4J 配置將被忽略。MyBatis 將你的 Log4J 配置忽略掉是相當(dāng)令人郁悶的(事實(shí)上,正是因?yàn)樵谶@種配置環(huán)境下,MyBatis 才會(huì)選擇使用 Commons Logging 而不是 Log4J)。如果你的應(yīng)用部署在一個(gè)類路徑已經(jīng)包含 Commons Logging 的環(huán)境中,而你又想使用其它日志工具,你可以通過(guò)在 MyBatis 配置文件 mybatis-config.xml 里面添加一項(xiàng) setting 來(lái)選擇別的日志工具。
... ...logImpl 可選的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING,或者是實(shí)現(xiàn)了接口 org.apache.ibatis.logging.Log 的,且構(gòu)造方法是以字符串為參數(shù)的類的完全限定名。(譯者注:可以參考o(jì)rg.apache.ibatis.logging.slf4j.Slf4jImpl.java的實(shí)現(xiàn))
你也可以調(diào)用如下任一方法來(lái)使用日志工具:
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();org.apache.ibatis.logging.LogFactory.useLog4JLogging();org.apache.ibatis.logging.LogFactory.useJdkLogging();org.apache.ibatis.logging.LogFactory.useCommonsLogging();org.apache.ibatis.logging.LogFactory.useStdOutLogging();如果你決定要調(diào)用以上某個(gè)方法,請(qǐng)?jiān)谡{(diào)用其它 MyBatis 方法之前調(diào)用它。另外,僅當(dāng)運(yùn)行時(shí)類路徑中存在該日志工具時(shí),調(diào)用與該日志工具對(duì)應(yīng)的方法才會(huì)生效,否則 MyBatis 一概忽略。如你環(huán)境中并不存在 Log4J,你卻調(diào)用了相應(yīng)的方法,MyBatis 就會(huì)忽略這一調(diào)用,轉(zhuǎn)而以默認(rèn)的查找順序查找日志工具。
關(guān)于 SLF4J、Apache Commons Logging、Apache Log4J 和 JDK Logging 的 API 介紹不在本文檔介紹范圍內(nèi)。不過(guò),下面的例子可以作為一個(gè)快速入門。關(guān)于這些日志框架的更多信息,可以參考以下鏈接:
- Apache Commons Logging
- Apache Log4j
- JDK Logging API
日志配置
你可以對(duì)包、映射類的全限定名、命名空間或全限定語(yǔ)句名開(kāi)啟日志功能來(lái)查看 MyBatis 的日志語(yǔ)句。
再次說(shuō)明下,具體怎么做,由使用的日志工具決定,這里以 Log4J 為例。配置日志功能非常簡(jiǎn)單:添加一個(gè)或多個(gè)配置文件(如 log4j.properties),有時(shí)需要添加 jar 包(如 log4j.jar)。下面的例子將使用 Log4J 來(lái)配置完整的日志服務(wù),共兩個(gè)步驟:
步驟 1:添加 Log4J 的 jar 包
因?yàn)槲覀兪褂玫氖?Log4J,就要確保它的 jar 包在應(yīng)用中是可用的。要啟用 Log4J,只要將 jar 包添加到應(yīng)用的類路徑中即可。Log4J 的 jar 包可以在上面的鏈接中下載。
對(duì)于 web 應(yīng)用或企業(yè)級(jí)應(yīng)用,則需要將 log4j.jar 添加到 WEB-INF/lib 目錄下;對(duì)于獨(dú)立應(yīng)用,可以將它添加到JVM 的 -classpath 啟動(dòng)參數(shù)中。
步驟 2:配置 Log4J
配置 Log4J 比較簡(jiǎn)單,假如你需要記錄這個(gè)映射器接口的日志:
package org.mybatis.example;public interface BlogMapper { @Select("SELECT * FROM blog WHERE id = #{id}") Blog selectBlog(int id);}在應(yīng)用的類路徑中創(chuàng)建一個(gè)名稱為 log4j.properties 的文件,文件的具體內(nèi)容如下:
# Global logging configurationlog4j.rootLogger=ERROR, stdout# MyBatis logging configuration...log4j.logger.org.mybatis.example.BlogMapper=TRACE# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n添加以上配置后,Log4J 就會(huì)記錄 org.mybatis.example.BlogMapper 的詳細(xì)執(zhí)行操作,且僅記錄應(yīng)用中其它類的錯(cuò)誤信息(若有)。
你也可以將日志的記錄方式從接口級(jí)別切換到語(yǔ)句級(jí)別,從而實(shí)現(xiàn)更細(xì)粒度的控制。如下配置只對(duì) selectBlog 語(yǔ)句記錄日志:
log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE與此相對(duì),可以對(duì)一組映射器接口記錄日志,只要對(duì)映射器接口所在的包開(kāi)啟日志功能即可:
log4j.logger.org.mybatis.example=TRACE某些查詢可能會(huì)返回龐大的結(jié)果集,此時(shí)只想記錄其執(zhí)行的 SQL 語(yǔ)句而不想記錄結(jié)果該怎么辦?為此,Mybatis 中 SQL 語(yǔ)句的日志級(jí)別被設(shè)為DEBUG(JDK 日志設(shè)為 FINE),結(jié)果的日志級(jí)別為 TRACE(JDK 日志設(shè)為 FINER)。所以,只要將日志級(jí)別調(diào)整為 DEBUG 即可達(dá)到目的:
log4j.logger.org.mybatis.example=DEBUG要記錄日志的是類似下面的映射器文件而不是映射器接口又該怎么做呢?
<?xml version="1.0" encoding="UTF-8" ?> select * from Blog where id = #{id}如需對(duì) XML 文件記錄日志,只要對(duì)命名空間增加日志記錄功能即可:
log4j.logger.org.mybatis.example.BlogMapper=TRACE要記錄具體語(yǔ)句的日志可以這樣做:
log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE你應(yīng)該注意到了,為映射器接口和 XML 文件添加日志功能的語(yǔ)句毫無(wú)差別。
注意 如果你使用的是 SLF4J 或 Log4j 2,MyBatis 將以 MYBATIS 這個(gè)值進(jìn)行調(diào)用。
配置文件 log4j.properties 的余下內(nèi)容是針對(duì)日志輸出源的,這一內(nèi)容已經(jīng)超出本文檔范圍。關(guān)于 Log4J 的更多內(nèi)容,可以參考Log4J 的網(wǎng)站。不過(guò),你也可以簡(jiǎn)單地做做實(shí)驗(yàn),看看不同的配置會(huì)產(chǎn)生怎樣的效果。
總結(jié)
以上是生活随笔為你收集整理的mybatis 不生效 参数_Mybatis-日志配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python统计pdf下载_python
- 下一篇: 几款免费PDF合并成一个PDF的软件推荐