使用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