`
houfeng0923
  • 浏览: 144827 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

日志框架(三)------log4jdbc数据库访问日志框架使用

阅读更多

 

     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日志框架介绍》参阅。


 

 

 

 

 

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    使用log4jdbc更有效的记录java sql日志.docx

    Log4jdbc 是一个非常实用的 Java SQL 日志框架,它通过代理模式来拦截常见的 JDBC 驱动,如 Oracle、Derby、MySQL、PostgreSQL、H2、HSQLDB 等,使得开发者能够轻松地记录和分析 SQL 操作。这个框架的核心优势在于其...

    log4j2.xml记录日志到到数据库

    Log4j2是一款广泛使用的日志框架,它提供了灵活且高效的日志记录功能。本示例将详细介绍如何配置并使用Log4j2将日志信息记录到MySQL数据库中。 首先,我们要理解Log4j2的核心概念。Log4j2主要包括以下几个组件: 1...

    使用log4j 记录日志到数据库

    Log4j是一款广泛使用的Java日志框架,它允许开发者灵活地控制日志信息的输出。这篇博客“使用log4j记录日志到数据库”将介绍如何配置和使用Log4j,以便将日志信息存储到数据库中,而非传统的文本文件。数据库存储的...

    log4JDBC全部JAR

    2. **slf4j-api-1.8.0-beta0.jar** 和 **slf4j-log4j12-1.8.0-beta0.jar**:Simple Logging Facade for Java (SLF4J) 是一个用于各种日志框架的抽象层,如Log4j、java.util.logging等。这两个JAR文件分别是SLF4J API...

    Log4j 日志信息存储到数据库中

    Apache Log4j 是一个流行的 Java 日志框架,它提供了灵活的日志记录机制,并支持将日志信息存储到不同的目的地,如控制台、文件或数据库等。 本文主要介绍如何使用 Log4j 将日志信息存储到 MySQL 数据库中。通过...

    打log4j日志-ibatis的sql输出

    本文主要探讨如何使用Log4j框架来记录Ibatis的SQL执行情况,以便更好地理解和优化数据库操作。 首先,Log4j是Apache的一个开源项目,它提供了一个灵活的日志系统,允许开发者定义日志级别、输出格式以及输出位置,...

    log4j输出日志到数据库表中

    **标题解析:** "log4j输出日志到数据库表中" 指的是使用Log4j这个流行的Java日志框架,将日志记录存储在数据库的特定表中,而不是默认的文本文件或控制台。这通常是出于日志管理、分析和长期存储的需求。 **描述...

    springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出

    在本项目中,"springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出",开发者旨在构建一个基于SpringMVC、MyBatis、MySQL数据库,利用Log4jdbc记录SQL日志,并通过Jxls进行Excel数据导出的功能完善的...

    如何借助log4j把日志写入数据库中

    Log4j是Apache提供的一款强大的、灵活的日志框架,广泛应用于各种Java应用程序。本文将深入讲解如何利用Log4j将日志信息存储到数据库中。 首先,我们需要理解Log4j的基本架构。Log4j由三个主要组件构成:Logger...

    log4j日志写入数据库实例

    在IT行业中,日志管理是系统监控和故障排查的关键环节,而Log4j作为Java领域广泛应用的日志框架,因其灵活性和高效性深受开发者喜爱。本文将深入探讨如何使用Log4j将日志信息写入数据库,以实现更高级别的日志管理和...

    hive jdbc 连接所需要的jar包

    9. **slf4j-api*.jar** 和 **slf4j-log4j12*.jar**: 日志记录框架SLF4J和其适配器Log4j,用于记录Hive JDBC操作的日志信息。 10. **protobuf*.jar**: Protocol Buffers是Google的一种数据序列化协议,Hive可能用它...

    Log4j写入数据库详解

    Log4j是一个流行的开源日志框架,由Apache Software Foundation开发维护。它提供了一种灵活的方式来控制日志的生成,使得日志的级别、格式以及输出目的地都可以在运行时进行配置。这不仅方便了开发人员对程序运行...

    log4j写入数据库配置

    Log4j是一个广泛使用的日志记录框架,它允许开发者在应用程序中轻松地记录各种日志信息。对于大型系统和分布式环境来说,将日志写入数据库可以提供更强大的查询、分析和故障排查能力。本文将详细阐述如何配置Log4j以...

    用maven + spring mvc +JDBCTEMPLATE +由Slf4j实现Common-Logging+Log4j的日志控制(数据库用MySQL)

    本文将探讨如何使用Maven、Spring MVC、JDBCTEMPLATE和日志框架Slf4j实现一个基于MySQL数据库的简单注册功能。首先,我们需要搭建一个开发环境,选用的技术栈包括: 1. **Maven** - 作为项目管理和构建工具,Maven...

    Java实训教程 Java软件开发实战 Java开发框架 log4jdbc 共5页.pptx

    log4jdbc作为一款轻量级的SQL日志调试框架,能够帮助开发者轻松地捕获并记录SQL执行情况,为开发过程中的调试提供了极大的便利。 #### 二、log4jdbc的Maven依赖配置 在项目中使用log4jdbc之前,首先需要将其添加到...

    spring框架和log4j日志用到的jar包

    关于日志,Log4j是一个广泛使用的Java日志框架,它允许开发者记录应用程序运行过程中的事件,提供不同级别的日志输出,如DEBUG、INFO、WARN、ERROR等。Log4j包含配置文件,可以设置日志级别、输出目的地(控制台、...

    log4j 配置mysql 数据库 demo

    在IT行业中,日志管理是系统监控和故障排查的重要环节,而Log4j作为Java领域广泛使用的日志框架,为开发者提供了强大的日志记录功能。本篇将详细介绍如何配置Log4j来将日志信息存储到MySQL数据库中,以实现日志的...

    log4j日志的数据库管理

    Log4j作为Apache旗下的一款开源日志框架,被广泛应用于Java应用程序中,用于收集、管理和分析应用运行时产生的各种日志信息。然而,传统的日志文件存储方式存在诸多限制,如日志文件过大导致读写效率低下,难以实现...

    日志配置文件log4j.xml以及MySql数据库驱动文件

    Log4j是Apache组织提供的一款开源的日志记录框架,广泛应用于Java应用程序。`log4j.xml`是其配置文件,用于定义日志输出的行为和格式。通过这个文件,开发者可以控制日志级别(如DEBUG、INFO、WARN、ERROR和FATAL)...

Global site tag (gtag.js) - Google Analytics