log4jdbc日志框架介绍

现大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在PLSQL Developer等客户端直接执行,加快调试速度。

.简单介绍:

1.没有使用log4jdbc前sql显示:

?


1

select username,password from bitth_date > ? and age < ? and username = ?

2.使用log4jdbc后sql显示:

?


1

select 
username,
password 
from 
bitth_date > to_date(‘2010-11-11’,’yyyy-mm-dd’) 
and 
age < 20 
and 
username = ‘qq2008’ {executed 
in 
2 msec}

这样就可以直接拷贝上面的sql在PLSQL直接执行. 最后的 {executed in 2 msec} 为SQL执行时间.而如果mysql,日志信息将不会出现 to_date()

.log4jdbc使用:

1.spring xml配置(拦截需要处理的dataSource连接)

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14


    
<
bean 
id
=
"log4jdbcInterceptor" 
class
=
"net.sf.log4jdbc.DataSourceSpyInterceptor" 
/>

    
<
bean 
id
=
"dataSourceLog4jdbcAutoProxyCreator" 
class
=
"org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"
>

       
<
property 
name
=
"interceptorNames"
>

           
<
list
>

              
<
value
>log4jdbcInterceptor</
value
>        

           
</
list
>

       
</
property
>

       
<
property 
name
=
"beanNames"
>

           
<
list
>

              
<
value
>dataSource</
value
>

           
</
list
>

       
</
property
>

    
</
bean
>

2.log4j.properties配置:

?


1

2

3

4

5


log4j.logger.jdbc.sqlonly=OFF

log4j.logger.jdbc.sqltiming=INFO

log4j.logger.jdbc.audit=OFF

log4j.logger.jdbc.resultset=OFF

log4j.logger.jdbc.connection=OFF

(日志信息如果全部为off,log4jdbc将不会生效,因此对性能没有任何影响)

3.下载slf4j

    log4jdbc需要依赖slf4j日志框架. http://www.slf4j.org/

三.扩展说明

DataSourceSpyInterceptor为我自己扩展的一个拦截器类,扩展主要是使用AOP的方式,因为log4jdbc原来的方式不适合我的项目.具体源码为:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26


import 
org.aopalliance.intercept.MethodInterceptor;

import 
org.aopalliance.intercept.MethodInvocation;

public 
class 
DataSourceSpyInterceptor 
implements 
MethodInterceptor {

    
private 
RdbmsSpecifics rdbmsSpecifics = 
null
;

    

    
private 
RdbmsSpecifics getRdbmsSpecifics(Connection conn) {

        
if
(rdbmsSpecifics == 
null
) {

            
rdbmsSpecifics = DriverSpy.getRdbmsSpecifics(conn);

        
}

        
return 
rdbmsSpecifics;

    
}

    

    
public 
Object invoke(MethodInvocation invocation) 
throws 
Throwable {

        
Object result = invocation.proceed();

        
if
(SpyLogFactory.getSpyLogDelegator().isJdbcLoggingEnabled()) {

            
if
(result 
instanceof 
Connection) {

                
Connection conn = (Connection)result;

                
return 
new 
ConnectionSpy(conn,getRdbmsSpecifics(conn));

            
}

        
}

        
return 
result;

    
}

}

四.相关下载:

log4jdbc:   http://code.google.com/p/log4jdbc/

另外一个对log4jdbc的扩展:  http://code.google.com/p/log4jdbc-remix/

时间: 2024-11-09 01:00:11

log4jdbc日志框架介绍的相关文章

log4jdbc日志框架-显示sql语句

现大家使用的ibatis,hibernate,spring jdbc的sql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行,需要自己拼凑sql.而log4jdbc是在jdbc层的一个日志框架,可以将占位符与参数全部合并在一起显示,方便直接拷贝sql在PLSQL Developer等客户端直接执行,加快调试速度. 一.简单介绍: 1.没有使用log4jdbc前sql显示: select username,password from

Springboot 系列(四)Spring Boot 日志框架

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 Spring 框架选择使用了 JCL 作为默认日志输出.而 Spring Boot 默认选择了 SLF4J 结合 LogBack.那我们在项目中该使用哪种日志框架呢?在对于不同的第三方 jar 使用了不同的日志框架的时候,我们该怎么处理呢? 1. 日志框架介绍 日志对于应用程序的重要性不言而喻,不管是记录运行情况还是追踪线上问题,都离不开对日

Java-最常用的Java日志框架整理

前言 Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好的完善系统.本文要来分享一些Java程序员最常用的Java日志框架组件.1.log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台.文件.用户

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

Java程序员最常用的8个Java日志框架

1.Log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台.文件.用户界面,也可以输出到操作系统的事件记录器和一些系统常驻进程.更值得一提的是,Log4j可以允许你非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位地掌控日志信息. 官方网站:http://logging.apache.org/log4j/2.x/ 下面是使用Log4j的一个简单例子: 2.gclogviewer – Java日志查看工

一个简单好用的日志框架NLog

之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4net vs. Nlog这两篇文章.本文主要介绍一下如何在项目中使用NLog. 在Nuget中安装NLog NLog可以直接使用Nuget安装: PM > Install-Package Nlog 使用NLog NLog的使用方式基本上和其它的Log库差不多,分为Trace.Debug.Info.Er

iOS开发-常用第三方开源框架介绍

iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下G

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

thinkPHP框架介绍(一)

原文:thinkPHP框架介绍(一) 一.ThinkPHP的介绍 期间有对ThinkPHP框架在学习上的问题欢迎大家交流:QQ:812231134 MVC M - Model 模型                      工作:负责数据的操作 V - View  视图(模板)        工作:负责前台页面显示 C - Controller 控制器(模块) 工作:描述功能 二.ThinkPHP的MVC对应的目录 M 项目目录/应用目录/Lib/Model V 项目目录/应用目录/Tpl C