一、项目介绍
log4jdbc项目地址:http://code.google.com/p/log4jdbc/
可以将原先的参数占位符“?”,替换为实际参数值,方便调试
如:select username,password from bitth_date > ? and age
替换为:select username,password from bitth_date > to_date(‘2010-11-11’,’yyyy-mm-dd’) and age
另外可以输出调用时间等。
二、log4jdbc使用
1. 选择log4jdbc版本,按照网站描述
log4jdbc3-1.2beta2.jar for JDBC 3 support in JDK 1.4 , JDK 1.5
log4jdbc4-1.2beta2.jar for JDBC 4 support in JDK 1.6 , JDK 1.7
2. 需要使用SLF4j
3. 设置jdbc driver。
如:在jdbc.properties中将原先的
修改为
4. 修改jdbc url。
如:在jdbc.properties中将原先的
修改为
5. 设置logger
如在控制台仅需要输出sql语句的log4j.properties
log4j.logger.jdbc.sqlonly=DEBUG,sql log4j.additivity.jdbc.sqlonly=true log4j.appender.sql=org.apache.log4j.ConsoleAppender log4j.appender.sqlThreshold=debug log4j.appender.sqlTarget=System.out log4j.appender.sqlEncoding=GBK log4j.appender.sql.layout=org.apache.log4j.PatternLayout log4j.appender.sql.layout.ConversionPattern=-----> %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
目前版本为1.2beta2。
log4jdbc文档中的log4j.properties示例
- !==============================================================================
- ! log4j.properties - An example configuration properties file for log4j.
- !
- ! Logging levels are:
- ! DEBUG INFO WARN ERROR FATAL
- !==============================================================================
- ! turn on the internal log4j debugging flag so we can see what it is doing
- log4j.debug=true
- !==============================================================================
- ! JDBC API layer call logging :
- ! INFO shows logging, DEBUG also shows where in code the jdbc calls were made,
- ! setting DEBUG to true might cause minor slow-down in some environments.
- ! If you experience too much slowness, use INFO instead.
- ! Log all JDBC calls except for ResultSet calls
- log4j.logger.jdbc.audit=INFO,jdbc
- log4j.additivity.jdbc.audit=false
- ! Log only JDBC calls to ResultSet objects
- log4j.logger.jdbc.resultset=INFO,jdbc
- log4j.additivity.jdbc.resultset=false
- ! Log only the SQL that is executed.
- log4j.logger.jdbc.sqlonly=DEBUG,sql
- log4j.additivity.jdbc.sqlonly=false
- ! Log timing information about the SQL that is executed.
- log4j.logger.jdbc.sqltiming=DEBUG,sqltiming
- log4j.additivity.jdbc.sqltiming=false
- ! Log connection open/close events and connection number dump
- log4j.logger.jdbc.connection=FATAL,connection
- log4j.additivity.jdbc.connection=false
- ! the appender used for the JDBC API layer call logging above, sql only
- log4j.appender.sql=org.apache.log4j.FileAppender
- log4j.appender.sql.File=./logs/sql.log
- log4j.appender.sql.Append=false
- log4j.appender.sql.layout=org.apache.log4j.PatternLayout
- log4j.appender.sql.layout.ConversionPattern=-----> %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
- ! the appender used for the JDBC API layer call logging above, sql timing
- log4j.appender.sqltiming=org.apache.log4j.FileAppender
- log4j.appender.sqltiming.File=./logs/sqltiming.log
- log4j.appender.sqltiming.Append=false
- log4j.appender.sqltiming.layout=org.apache.log4j.PatternLayout
- log4j.appender.sqltiming.layout.ConversionPattern=-----> %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
- ! the appender used for the JDBC API layer call logging above
- log4j.appender.jdbc=org.apache.log4j.FileAppender
- log4j.appender.jdbc.File=./logs/jdbc.log
- log4j.appender.jdbc.Append=false
- log4j.appender.jdbc.layout=org.apache.log4j.PatternLayout
- log4j.appender.jdbc.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
- ! the appender used for the JDBC Connection open and close events
- log4j.appender.connection=org.apache.log4j.FileAppender
- log4j.appender.connection.File=./logs/connection.log
- log4j.appender.connection.Append=false
- log4j.appender.connection.layout=org.apache.log4j.PatternLayout
- log4j.appender.connection.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n