我正在使用MyBatis3我需要一种方法将所有select,insert,update语句记录到我的log4j日志文件中。
这是我的log4j文件。请帮忙
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=test.log
log4j.appender.file.MaxFileSize=2MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
答案 0 :(得分:2)
您可以看到Log4J配置信息here。简而言之 - 您需要在映射器或映射器包或特定映射器方法上将Log4J loglevel设置为DEBUG或TRACE。例如。 log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE
。 TRACE将打印SQL,参数和结果集,DEBUG将仅打印SQL和参数。
答案 1 :(得分:2)
我找到了一种方式,让别人也能受益
为了记录sql语句,请下载Simple Logging Facade for Java(download slf4j here)
除了常规的mybatis,odbc和oracle jar之外,我的类路径中添加了以下内容
注意:xxxx是适当的版本
并在我的log4j中添加以下行(请参阅我的问题)
# logger debug
log4j.logger.test.Log4jTestMyBatis=DEBUG, convert
log4j.appender.convert = org.apache.log4j.ConsoleAppender
log4j.appender.convert.layout=org.apache.log4j.PatternLayout
log4j.appender.convert.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c{3} %x - %m%n
# end logger debug
# mybatis loggers #
log4j.logger.com.ibatis=DEBUG, convert
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG, convert
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG, convert
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG, convert
这是我用于测试的Groovy类示例
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.PropertyConfigurator;
import com.abc.db.ConfigInfo;
import com.abc.db.ConfigInfoExample;
import com.abc.db.client.ConfigInfoMapper;
import com.abc.db.init.DatabaseConnectivity;
class Log4jTestMyBatis {
static Logger logger = LoggerFactory.getLogger(Log4jTestMyBatis.class)
static main(args) {
PropertyConfigurator.configure(Log4jTestMyBatis.class.getResource("log4j.properties"));
DatabaseConnectivity.init()
SqlSession newABCSession = DatabaseConnectivity.getNewABCSessionFactory().openSession()
ConfigInfoMapper mapper = newABCSession.getMapper(ConfigInfoMapper.class)
ConfigInfoExample qExample = new ConfigInfoExample()
qExample.createCriteria().andProjectIdEqualTo("0-12170")
List<ConfigInfo> ctlist = mapper.selectByExample(qExample)
logger.debug(ctlist.get(0).getCfgName())
newABCSession.close()
logger.debug("debug")
}
}