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)非常重要。這將意味著锌杀,在諸如 Tomcat?的環(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ù)的類的完全限定名。
你也可以調(diào)用如下任一方法來(lái)使用日志工具:
如果你決定要調(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)的查找順序查找日志工具洒沦。
配置log4j
首先引入依賴:
然后在resource目錄下添加log4j.properties文件,配置:
配置的文件是自定義插件打印SQL和執(zhí)行時(shí)間的類价淌。下面在類中添加log4j的打印工具:
打印日志:
禁用掉緩存申眼,然后看到效果:
修改日志配置類:
log4j.logger.mybatis.UserMapper=TRACE
或者只針對(duì)某些SQL語(yǔ)句打印日志:
log4j.logger.mybatis.UserMapper.selectById=TRACE
可以看到執(zhí)行效果:
配置slf4j
SLF4J代表Simple Logging Facade for Java。它提供了Java中所有日志框架的簡(jiǎn)單抽象蝉衣。因此括尸,它使用戶能夠使用單個(gè)依賴項(xiàng)處理任何日志框架,例如:Log4j病毡,Logback和JUL(java.util.logging)濒翻。可以在運(yùn)行時(shí)/部署時(shí)遷移到所需的日志記錄框架啦膜。
也就是說(shuō)slf4j就是對(duì)所有日志框架的一個(gè)接口抽象有送,我們具體打印日志還是需要引入具體的依賴,如果使用log4j僧家,就加入依賴:
這里不使用log4j雀摘,使用slf4j+logback進(jìn)行日志打印,加入依賴:
修改配置文件:
<setting name="logImpl" value="SLF4J"/>
然后就可以看到經(jīng)典的slf4j的日志:
在代碼中打印日志也很簡(jiǎn)單八拱,引入日志類即可:
private static final Loggerlog = LoggerFactory.getLogger(MyBatisDemo.class);
logback的配置文件可以在resource下面新建一個(gè)logback.xml文件届宠,在里面配置日志的具體輸出。logback的配置這里不是重點(diǎn)乘粒。