p6spy可以将hibernate的hql或者ibatis中的占位符『? , :name』等等转换为标准sql进行输出。
下载地址:
http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22p6spy%22%20AND%20a%3A%22p6spy%22
说明文档:
http://p6spy.github.io/p6spy/2.0/configandusage.html#confusage
使用方式(1.X和2.X的配置方式略有不同,这里以2.X版本配置mysql为例):
1.将p6spy-2.X.jar拷贝到项目的lib下;
2.将源码中的spy.properties拷贝到src下,即编译后的根路径下;
3.修改spy.properties中的driverlist=com.mysql.jdbc.Driver,其它属性默认即可,也可按需修改,比如开启appender=com.p6spy.engine.spy.appender.StdoutLogger,这样可以在控制台查看sql输出,相关属性说明重点看说明文档吧;
4.修改项目中的数据源配置信息,比如使用tomcatJNDI的配置方式时,数据源配置中的driverClassName="com.p6spy.engine.spy.P6SpyDriver"
和 url="jdbc:p6spy:mysql://localhost:3306/dbname",其它属性配置不变;
5.启动tomcat,当有hibernateHql输出时,就会紧跟着打印转换后的标准sql。
给出一个我在开发环境下的配置信息:
driverlist=com.mysql.jdbc.Driver
dateformat=yyyy-MM-dd hh:mm:ss,SSS
appender=com.p6spy.engine.spy.appender.StdoutLogger
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
databaseDialectDateFormat=yyyy-MM-dd hh:mm:ss,SSS
如果希望使用log4j输出日志,可以配置如下:
1.spy.properties中启用appender=com.p6spy.engine.spy.appender.Slf4JLogger;
2.log4j.properties中配置如下:
log4j.rootLogger=info,stdout log.filepath=/usr/local/logs/log4j logfile.filename=log4j_DailyRolling.log log4j.logger.p6spy=INFO,logfile log4j.additivity.p6spy=true 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{yyyy-MM-dd HH:mm:ss} %c{1}:%L %5p - %m%n log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.DatePattern='.'yyyy-MM-dd log4j.appender.logfile.File=${log.filepath}/${logfile.filename} log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%X{userName}][%X{userLocale}][%c] - <%m>%n
3.必须的jar包:p6spy-2.3.1.jar,log4j-1.2.16.jar,slf4j-api-1.6.1.jar,slf4j-log4j12-1.6.1.jar,也可以直接下载p6spy-2.3.1-log4j-nodep.jar,这一个包里面就包含了前面4个包。