log4jdbc 是工作在jdbc层的一个日志框架,能够记录SQL及数据库连接执行信息。
一般的SQL日志会把占位符和参数值分开打印,log4jdbc则会记录数据库执行的完整SQL字符串,在数据库应用开发调试阶段非常有用。
log4jdbc具有以下特性:
- 支持JDBC3和JDBC4。
- 支持现有大部分JDBC驱动。
- 易于配置(在大部分情况下,只需要改变驱动类名并在jdbc url前加上”jdbc:log4“,设置好日志输出级别)。
- 能够自动把SQL变量值加到SQL输出日志中,改进易读性和方便调试。
- 能够快速标识出应用程序中执行比较慢的SQL语句。
- 能够生成SQL连接数信息帮助识别连接池/线程问题。
1 使用log4jdbc前,首先下载相关依赖的jar文件
log4jdbc日志系统基于
SLF4J('Simple Logging Facde),本例采用的依赖文件列表如下:
log4jdbc3-1.2beta2.jar (for JDBC 3 (JDK 1.4 and 1.5))
log4j-1.2.15.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-16.1.jar
2 log4jdbc使用
log4jdbc使用很方便,而且可以根据不同的开发需要采用不同的使用方案。此处将使用方式分为两类:编程式和声明式(或配置式)
无论采用哪一种方法,都需要在日志配置文件中定义相关logger对象的输出级别和输出器。
在log4jdbc中定义了以下五个日志对象:
jdbc.sqlonly : 记录系统执行过的sql语句
jdbc.sqltiming : 记录sql执行的时间,可以分析耗时的sql语句
jdbc.audit : 记录除了ResultSet外的所有JDBC调用情况。一般不需要。
jdbc.resultset : 记录返回结果集信息
jdbc.connection: 记录数据库连接和释放信息,可记录当前的数据库连接数,便于诊断连接是否释放。
##-------------log4jdbc 配置方式示例---------------##
#值设置方式 :如果关闭设置为OFF,如果开启设置为ON(默认debug级别)或(设置输出级别,输出器)
log4j.logger.jdbc.sqlonly=INFO,console
log4j.logger.jdbc.sqltiming=INFO,console
log4j.logger.jdbc.audit=INFO,console
log4j.logger.jdbc.resultset=INFO,console
log4j.logger.jdbc.connection=INFO,console
log4j.additivity.jdbc.sqlonly=false
log4j.additivity.jdbc.sqltiming=false
log4j.additivity.jdbc.audidt=false
log4j.additivity.jdbc.resultset=false
log4j.additivity.jdbc.connection=false
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
1,声明式
当数据库连接信息记录在配置文件(properties文件、spring 配置文件或tomcat连接池配置文件等)中,可以采用声明式配置。
只需要修改数据库驱动类和连接字符串即可,以tomcatJNDI连接池为例
原有配置:
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="root"
maxWait="5000"
password="root"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/gis?autoReconnect=true"/>
启用log4jdbc配置:
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="root"
maxWait="5000"
password="root"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="net.sf.log4jdbc.DriverSpy"
url="jdbc:log4jdbc:mysql://localhost:3306/gis?autoReconnect=true"/>
2,编程式
编程式使用jdbc日志有两种方法
方法一:修改代码中数据库驱动类名和连接字符串
private static String driver="net.sf.log4jdbc.DriverSpy"; //原始值//"com.mysql.jdbc.Driver";
private static String url="jdbc:log4jdbc:mysql://localhost:3306/gis"; //原始值// "jdbc:mysql://localhost:3306/gis";
方法二:包装正常的数据库连接对象Connection
public static Connection getConn() throws SQLException{
conn = ds.getConnection();
conn.setAutoCommit(true);
//未配置driver和url为log4jdbc格式
return new net.sf.log4jdbc.ConnectionSpy(conn);
}
此外,对于编程式中的方法二,在baidqiu的文章《log4jdbc日志框架介绍》中提供了基于spring aop的另一种可配置式使用方式。
原理是对spring中的 dataSource bean设置自动代理,对dataSource返回的connection进行拦截,使之返回如上所述的connection包装对象。
具体实现请移步《log4jdbc日志框架介绍》参阅。
分享到:
相关推荐
|-------|-------|--|--Log.java 日志类源文件 |-------|-------|--|--Login.java 用户登录类源文件 |-------|-------|--|--MD5.java MD5加密算法源文件 |-------|-------|--|--News.java 新闻管理类源文件 |-------...
log4j.appender.appender3.URL=jdbc:mysql://127.0.0.1:3306/doroodo?characterEncoding=UTF-8 ---->日志数据库链接 log4j.appender.appender3.user=root ---->日志数据库用户名 log4j.appender.appender3.password=...
常用功能:会话(session),安全性(rbac权限框架),shiro(rbac权限框架),oauth(第三方登录),logback(日志),log-aop(AOP方式日志),ehcache(ehcache缓存),异常(统一异常处理),Async(异步
SingleJDBCBase 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,JDBC为数据访问层。...* 日志管理:SLF4J 1.7.25、Log4j2.8.2 * 工具类:fasterxml 2.8.7、junit 4.12、
Enjoy(模板引擎),JdbcTemplate(通用JDBC操作数据库),JPA(强大的ORM框架),强大的ORM框架(强大的ORM框架),通用Mapper(快速操作Mybatis Mybatis),PageHelper(通用的Mybatis分页插件),mybatis-plus...
JSP在线销售管理系统,简易java(easyjf)框架开源订销管理系统(测试版),服务器环境,tomcat... 4、系统使用Log4j-1.2 作为日志系统,通过更改Web-inf\classes\log4j.properties 的设置可以查看系统运行的详细日志信息.
-日志记录功能(类似于log4j,将PL / SQL异常消息长度的限制扩展到32K); -易于处理文件; -灵活定制的调度程序(类似于cron); -创建Microsoft Excel xml文件; -发送和接收电子邮件(smtp和pop3协议的实现); ...
系统功能模块 用户管理 提供用户的相关配置 角色管理 角色菜单分配权限 ...日志打印:logback+log4jdbc 接口文档 swagger2 其他:fastjson,aop,MapStruct等。 页面框架:Vue 前端源码:eladmin-qt 后端源码:eladmin
在《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容包括《开发者突击:Java Web主流框架整合开发(J2EE+...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容为本书十种架构原型程序包、个人通信录及办公自动化系统源程序,以及本书所使用的所有软件的安装程序。 因为每次...
actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、...
日志管理:SLF4J 1.7 + Log4j2 2.7 布局框架:SiteMesh 3.0.1 分布式应用程序协调服务:ZooKeeper 3.3.1 分布式服务框架:Dubbo 2.5.3 接口测试框架:Swagger2 2.6.1 工具类:Apache Commons、Jackson 2.2、fastjson...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 一本java web学习的好教材,影印版,清晰度保质保量,共809页,压缩成7個文件,爲了区分别的压缩文件,我在文件名后面增加(hyit2004),...
32.log4j-1.2.16.jar 记录程序运行日志 33.mybatis 所用jar包 mybatis-3.1.1-SNAPSHOT.jar mybatis-generator-core-1.3.1.jar mybatis-spring-1.1.1-SNAPSHOT.jar MyBatis是一个支持普通SQL查询,存储过程和高级...
日志管理:SLF4J 1.7.21、Log4j 编辑器:ueditor 工具类:Apache Commons、Jackson 2.8.5、POI 3.15 view层:JSP 数据库:mysql、oracle等关系型数据库 前端 dom : Jquery 分页 : jquery.pagination UI管理 : ...
<artifactId>slf4j-log4j12 <!-- Mybatis --> <groupId>org.mybatis <artifactId>mybatis <!-- mybatis的整合包 --> <groupId>org.mybatis <artifactId>mybatis-spring <!-- ...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 一本java web学习的好教材,影印版,清晰度保质保量,共809页,压缩成7個文件,爲了区分别的压缩文件,我在文件名后面增加(hyit2004),...
3.3 log4j.properties 日志文件 不用修改 3.4 修改spring-mvc 文件 .1 修改controller包的自动扫描注解,如图 2 定义jsp文件存放的路径 <property name="prefix" value="/jsp/" /> 如图 3.5修改spring-mabtis...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容为本书十种架构原型程序包、个人通信录及办公自动化系统源程序,以及本书所使用的所有软件的安装程序。 因为每次...
在本书架构讲解的过程中,分别使用并讲解了JDBC、Log4j、Sitemesh、JUnit技术。 随书附赠光盘内容为本书十种架构原型程序包、个人通信录及办公自动化系统源程序,以及本书所使用的所有软件的安装程序。 因为每次...