由于公司项目架构使用hibernate,在调试程序的时候hibernate打印的sql都是带占位符的,不是最原始的sql语句,这对我们开发人员来说是很痛苦的一件事情.经过一番波折在网上找到了这么一个jar包,它的原理是:拦截最底层的jdbc连接,监控所有jdbc操作,所以说会影响性能,建议使用的童鞋在项目发布的时候最好把他替换回来.
jar包下载地址:http://download.csdn.net/detail/qq413041153/4177575
1.如果你的datasource配置在hibernate或者spring的配置文件中,那么你需要将jar包放到编译路径下;如果你使用的是jndi之类的在tomcat配置文件里配置的数据源,那么就需要将jar放到tomcat的lib里面.提醒一句 :如果你这里是tomcar的jndi配置的话,需要删除tomcat工作目录项目内容,重新编译.
2.将数据源的classname替换成com.p6spy.engine.spy.P6SpyDriver,这个类会拦截你的数据库连接.
3.将spy.properties配置文件放到src根目录.(这里的src是指的你源码编译的初始根目录, 一般不改动的话就是src,有的项目如果需要多语版版本的可能是src/java是java源码src/c是别的源码,这时候你就要放到src/java下面).
realdriver1=com.mysql.jdbc.Driver realdriver2=com.informix.jdbc.IfxDriver realdriver3=COM.ibm.db2.jdbc.net.DB2Driver realdriver4=org.gjt.mm.mysql.Driver
5.找到excludecategories这个是定义你不喜欢的输出信息,也就是说他的值将不会被输出到log或打印在控制台.可的值有: error, info, batch, debug, statement,commit, rollback, result, resultset.这里的resultset是请过修改源码后加上的官方是不支持屏蔽到这个属性的.
appender=com.p6spy.engine.logging.appender.Log4jLogger appender=com.p6spy.engine.logging.appender.StdoutLogger appender=com.p6spy.engine.logging.appender.FileLogger
7.找到logfile,这个属性是定义你的log日志文件的存放位置.自己任意即可,如果你没选择输出到配置文件,其值默认即可.