log4j记录执行的sql语句

需求:

调试程序时,有时需要了解最终执行的sql语句,特别是涉及到预编译,传参的情况。

配置方式:

打开工程的log4j.properties文件,添加如下配置:

log4j.logger.java.sql=DEBUG,SQL
log4j.additivity.java.sql=false

log4j.appender.SQL=org.apache.log4j.RollingFileAppender
log4j.appender.SQL.File=${LOG_DIR}/sql.log
log4j.appender.SQL.MaxFileSize=5000KB
log4j.appender.SQL.MaxBackupIndex=50
log4j.appender.SQL.Append=true
log4j.appender.SQL.layout=org.apache.log4j.PatternLayout
log4j.appender.SQL.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %-5p %c %x - %m%n
log4j.appender.SQL.encoding=UTF-8

重启工程,可以看到在日志输出目录下多了一个sql.log文件,打开就可以看到程序执行的所有的sql语句。

如:

 [2014-07-19 15:49:57] DEBUG java.sql.Connection  - {conn-100081} Preparing Statement:   select dpt_id,name,icon from AQ_DEPARTMENT             order by    add_time ASC      limit     ?,?    
[2014-07-19 15:49:57] DEBUG java.sql.PreparedStatement  - {pstm-100082} Executing Statement:   select dpt_id,name,icon from AQ_DEPARTMENT             order by    add_time ASC      limit     ?,?    
[2014-07-19 15:49:57] DEBUG java.sql.PreparedStatement  - {pstm-100082} Parameters: [0, 5]
[2014-07-19 15:49:57] DEBUG java.sql.PreparedStatement  - {pstm-100082} Types: [java.lang.Integer, java.lang.Integer]
[2014-07-19 15:49:57] DEBUG java.sql.ResultSet  - {rset-100083} ResultSet
[2014-07-19 15:49:57] DEBUG java.sql.ResultSet  - {rset-100083} Header: [dpt_id, name, icon]
[2014-07-19 15:49:57] DEBUG java.sql.ResultSet  - {rset-100083} Result: [1, 公安厅信通处, /img/department/1.jpg]

注意:生产环境,勿轻易打开,会很影响性能。

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2093995
今日推荐