Log4jdbc数据库访问日志框架使用

2015-07-16 12:08:06 · 作者: · 浏览: 0

log4jdbc官网地址


当前最新版本是1.2, 支持JDBC3, JDBC4


Log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在数据库客户端运行


未使用log4jdbc记录的SQL:


select count(*) from region where id=?


使用 log4jdbc记录的SQL:


select count(*) from region where id='gz'


log4jdbc特点


1.全面支持JDBC 3和JDBC 4!


2.容易配置,在大多数情况下,你需要做的是改变驱动类名net.sf.log4jdbc.DriverSpy的,并在前面加上“为jdbc:log4jdbc”到你现有的JDBC URL,建立你的日志记录类别。


示例:jdbc:log4jdbc:mysql://192.168.0.207:3306/mall


3.自动SQL输出。这大大提高了许多情况下的可读性和调试。


4.可以打印SQL的执行时间,用来调试SQL的执行效率。


5.生成SQL连接数信息,以帮助识别连接池或线程问题。


6.底层的JDBC驱动程序的兼容,使用JDK 1.4以上和SLF4J 1.x


log4jdbc设置的logger


logger? ? ? ? ? ? ? ? 描述
jdbc.sqlonly? ? ? ? ? 仅记录SQL。
jdbc.sqltiming? ? ? ? 计时统计SQL的执行用时。
jdbc.audit? ? ? ? ? ? 记录所有的JDBC调用(ResultSet的除外)。Log量非常大,会影响性能,建议关闭。
? ? ? ? ? ? ? ? ? ? ? 一般情况下不需要开这个设定,除非追踪一个特定的JDBC问题。
jdbc.resultset? ? ? ? 比audit量更大,包括ResultSet对象,记录所有的JDBC记录。建议关闭
jdbc.connection? ? ? ? 记录打开和关闭连接以及打开的连接数。用于追踪连接泄漏问题,非常有用。
?
使用方法


1: 在log4j配置文件中增加对应的logger


2:? 改变驱动类名,


? ? ? ? 如MYSQL的:jdbc:log4jdbc:mysql://192.168.0.207:3306/mall


? ? ? ? 如Derby的:jdbc:log4jdbc:derby://localhost:1527//db-derby-10.2.2.0-bin/databases/MyDatabase
?
log4j配置样例
?



?
? ?
? ?
? ?

? ?
? ?
? ?

?

?
? ?
? ?
? ?
? ?
? ?
? ? ?
? ?

?

?
? ?
? ?
? ?
? ?
? ?
? ? ?
? ?

?

?
? ?
? ?
? ?
? ?
? ?
? ? ?
? ?

?

?
? ?
? ?
? ?
? ?
? ?
? ? ?
? ?

?

?
?
?
? ?
? ?
?

?
?
?
? ?
? ?
?

?
?
?
?
? ?
? ?
?

?
?
?
? ?
? ?
?

?
?
?
? ?
? ?
?

?
?
?
?
? ?
? ?
?


?
?


?
程序调用示例


public class Demo {
? ? private static Logger log = LoggerFactory.getLogger(Demo.class);
?
?
? ? public static void main(String[] args) throws SQLException {
? ? ? ? log.info("开始");
? ? ? ? Connection conn = DBUtils.getConnection();
? ? ? ? conn.createStatement().execute("select count(*) from xbm_region");
? ? ? ? JdbcUtils.executeQuery("select count(*) from xbm_region where id=?", "xxx");
? ? ? ? log.info("完成");
? ? }
}