mybatis打印sql

最近使用mybatis,开发中一直设置debug级别的日志。现在开始测试了,就把日志级别跳到了info级别,日志是很清晰了,但是sql语句不打印了,原来mybatis打印sql的日志级别设置的是debug。

根据

11-08 16:23:13 [DEBUG]org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:49): ==>  Preparing: select id from *** Where
( *** = ? )

就设置了

log4j.logger.org.apache.ibatis.logging.commons=debug

结果不打印。

通过查看源码发现org.apache.ibatis.logging只是mybatis的一个日志包,猜想因为这个包是被其他逻辑调用的,所以应该设置debug级别的包为调用日志包,于是索性

log4j.logger.org.apache.ibatis=debug

把整个mybatis的包都设置成debug级别,结果还是不打印。这下就晕了,把你整个jar包都设置才了DEBUG级别,你还不打印。于是又尝试把mybatis-sping-1.2.2.jar级sping jdbc等包都设置成debug级别,结果还是不打印。

谷歌被墙了就百度吧,各种不靠谱答案,最终搜到github的mybatis文档:

http://mybatis.github.io/mybatis-3/logging.html

找到答案

log4j.logger.org.mybatis.example=TRACE

TRACE就是DEBUG。

没深入了解过log4j的内部机制,所以不明白为什么

log4j.logger.org.apache.ibatis=debug

不起作用。

但是官网给的方法也说的通:操纵数据库都是调用mapper接口,那就直接把mapper所在的包设置成debug级别,它下面的所有log也就应该是debug级别的了。

遇到问题还是要去官网。


你可能感兴趣的:(log4j,mybatis)