mybatis输出日志
想设置mybatis输出sql语句来调试,但又懒得看它的源码来获得如何输出sql日志,于是网上搜,试啊试,没一个靠谱的。。。只能看源码了。。。
因为mybatis是一个开源的框架,因此的它的日志不能硬编码成log4j之类的具体日志框架,鬼知道你到底用不用log4j,所以mybatis默认用的日志门面框架slf4j,具体用什么日志由客户方自己决定。
package org.apache.ibatis.logging;public class LogFactory { private static Constructor<? extends Log> logConstructor; static { tryImplementation(new Runnable() { public void run() { useSlf4jLogging(); } }); tryImplementation(new Runnable() { public void run() { useCommonsLogging(); } }); tryImplementation(new Runnable() { public void run() { useLog4JLogging(); } }); tryImplementation(new Runnable() { public void run() { useJdkLogging(); } }); tryImplementation(new Runnable() { public void run() { useNoLogging(); } }); }...}
org.apache.ibatis.logging.jdbc.ConnectionLoggerorg.apache.ibatis.logging.jdbc.PreparedStatementLoggerorg.apache.ibatis.logging.jdbc.ResultSetLoggerorg.apache.ibatis.logging.jdbc.StatementLogger
if (log.isDebugEnabled()) { log.debug("xxxxxxxxx"); }
<appender name="sqlappender" value="/home/logs/sql.log" /><param name="append" value="true" /><param name="encoding" value="UTF-8" /><param name="threshold" value="DEBUG" /><layout value="%d{yyyy-MM-dd HH:mm:ss} %m%n" /></layout></appender><logger name="java.sql.Connection"><level value="debug" /><appender-ref ref="sqlappender" /></logger><logger name="java.sql.Statement"><level value="debug" /><appender-ref ref="sqlappender" /></logger><logger name="java.sql.CallableStatement"><level value="debug" /><appender-ref ref="sqlappender" /></logger><logger name="java.sql.PreparedStatement"><level value="debug" /><appender-ref ref="sqlappender" /></logger>