使用mybatis/hibernate/jdbctemplate或原生jdbc操作时,打印出来的SQL语句都是SQL和值分开的,导致有时侯调试很麻烦
使用jdbclogger可以很好的解决此问题,它可以让我们执行SQL的完整语句都打印出来
对于未使用maven的项目可以从它的官网下载JAR文件
jdbclogger官网下载地址:
http://jdbclogger.sourceforge.net/download.html
使用MAVEN的仓库则需要:
1)添加依赖的仓库地址
<repository>
<id>jdbclogger</id>
<name>JDBC Logger private repo</name>
<url>http://jdbclogger.sourceforge.net/m2-repo/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
在依赖中引入:
<dependency>
<groupId>net.sourceforge.jdbclogger</groupId>
<artifactId>jdbclogger</artifactId>
<version>0.6</version>
</dependency>
依赖引入后只需要三个步骤即可实现log4j将sql语句完整的打印出来:
1)在log4j中配置jdbclogger打印对应的日志级别
log4j.rootLogger=DEBUG, STDOUT, FILE
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
log4j.appender.STDOUT.Target=System.out
#用于将完整的SQL语句打到控制台中
log4j.logger.net.sourceforge.jdbclogger=DEBUG
2)增加资源文件jdbclogger.properties
jdbclogger.driver=org.postgresql.Driver注意不同的数据库驱动路径要写正确
3)修改jdbc使用的驱动路径指向jdbclogger类:
net.sourceforge.jdbclogger.JdbcLoggerDriver
public class ConnFactory {
private static Log log = LogFactory.getLog(ConnFactory.class);
private static Connection srcConn = null;
private static Connection descConn = null;
static {
try {
Class.forName("net.sourceforge.jdbclogger.JdbcLoggerDriver").newInstance();
} catch (Exception e) {
log.error("[datatransfer] cant not install driver.", e);
System.exit(1);
}
}
.....
以上是使用原生jdbc时实现的SQL打印的示例。
和spring的集成也很简单,具体可以看一下官网文档:
http://jdbclogger.sourceforge.net/spring-integration.html