文档章节

tomcat7数据库连接池与log4jdbc的配置与试用

恺哥
 恺哥
发布于 2013/08/02 17:04
字数 460
阅读 7.2K
收藏 17

博文介绍

刚刚有阅读了一遍江南白衣的springside选型文档 https://github.com/springside/springside4/wiki/Design

发现其中谈到了Log4jdbc这个日志组件

随后,访问了log4jdbc的官网网站,https://code.google.com/p/log4jdbc/

官方网站上提供了所有使用log4jdbc的细节

为了配合试用log4jdbc,我又尝试使用了tomcat7新提供的数据库连接池,官方地址:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

另外,试用环境选择了最新的spring3.2.3和mysql数据库。

环境准备

所需的jar包一览表:

spring所需的jar有:commons-logging、spring-*

mysql数据库的jdbc驱动:mysql-connector-java

log4jdbc所需的jar有:log4jdbc4-1.2(log4jdbc4要求在jdk1.6以上使用,jdk1.6以下用log4jdbc3-1.2)、log4j、slf4j-*

tomcat7数据库连接池所需jar有:tomcat-jdbc(tomcat_home/lib)、tomcat-juli(tomcat_home/bin)

tomcat7数据库连接池配置

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> 
	<property name="driverClassName" value="${log4jdbc.jdbc.driverClassName}" />
	<property name="url" value="${log4jdbc.jdbc.url}" />
	<property name="username" value="${jdbc.username}" />
	<property name="password" value="${jdbc.password}" />
 
	<property name="maxActive" value="20" /><!-- default 100 -->
	<property name="initialSize" value="1" /><!-- default 10 -->
	<property name="maxWait" value="60000" /><!-- default 30 sec -->
	<property name="maxIdle" value="20" />
	<property name="minIdle" value="1" />
 
	<property name="timeBetweenEvictionRunsMillis" value="3000" /><!-- default 5 sec -->
	<property name="minEvictableIdleTimeMillis" value="300000" /><!-- default 60 sec -->
 
	<property name="validationQuery" value="SELECT 1" /><!-- oracle: select 1 from dual -->
	<property name="testWhileIdle" value="true" />
	<property name="testOnBorrow" value="false" />
	<property name="testOnReturn" value="false" />
</bean>

Log4jdbc配置

jdbc.properties

#mysql is default
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test

#enable log4jdbc
log4jdbc.jdbc.driverClassName=net.sf.log4jdbc.DriverSpy
log4jdbc.jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/test

jdbc.username=root
jdbc.password=root

log4j.properties

log4j.rootCategory=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n
log4j.category.org.springframework.beans.factory=error

#log4jdbc
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

log4jdbc的执行效果

上图可以看出,insert语句的执行时间是129毫秒

这对于开发调试还是很有帮助的,当然mysql的慢查询分析也有类似的功能。

完整的试用代码我已经分享之git@osc ,请访问:

http://git.oschina.net/kzhou-hrb/testtomcatcpandlog4jdbc

© 著作权归作者所有

恺哥

恺哥

粉丝 168
博文 35
码字总数 22616
作品 0
哈尔滨
技术主管
私信 提问
加载中

评论(3)

Ivan罗
Ivan罗
博主你好,我安照你说的配置,但是控制台并没有打印sql语句
恺哥
恺哥 博主

引用来自“抓瓦工人”的评论

太帅了,一直再找这种组件,目前都是用sqlprofile监控的,顺便问一下博主,这个组件能输出hibernate mybatis这类orm生成的查询语句么!

我几乎不用hibernate,mybatis没有试验,你可以亲自试试,呵呵
pantrick
pantrick
太帅了,一直再找这种组件,目前都是用sqlprofile监控的,顺便问一下博主,这个组件能输出hibernate mybatis这类orm生成的查询语句么!
log4jdbc+druid不能连接Oracle数据库not support oracle driver 1.0

如果有任何没有铺上来的配置,麻烦回复我补上来下,辛苦啦!~ log4jdbc+druid不能连接Oracle数据库not support oracle driver 1.0 我的配置是 url: jdbc:log4jdbc:oracle:thin:@127.0.0.1 :1...

涂司机
2019/07/23
348
4
log4jdbc数据库访问日志框架使用

log4jdbc官网地址 http://code.google.com/p/log4jdbc/ https://github.com/arthurblake/log4jdbc 当前最新版本是1.2, 支持JDBC3, JDBC4 log4jdbc是在jdbc层的一个日志框架,可以将占位符与参...

cloud-coder
2015/05/27
3.3K
13
javaer/ssmbootstrap_table

ssmbootstrap_table demo 技术栈/technology stack spring+springmvc+mybatis poi3 自定义标签开发 bootstrap3/bootstrap-fileinput/jquery.fileupload bootstrap-table1.9 druid fastjson w......

javaer
2016/03/08
0
0
如何有效地记录 Java SQL 日志?

在常规项目的开发中可能最容易出问题的地方就在于对数据库的处理了,在大部分的环境下,我们对数据库的操作都是使用流行的框架,比如 Hibernate 、 MyBatis 等。由于各种原因,我们有时会想知...

OneAPM蓝海讯通
2015/09/22
164
1
Tomcat7 新连接池的关闭时抛出异常 Connection has already been closed.

试用了一下Tomcat7的新连接池,写一个用于相同线程间Dao对象共享连接的Filter时候遇到了一个比较奇怪的问题。总是过滤器在响应最后关闭connection时抛出异常: java.sql.SQLException: Connec...

逝水fox
2012/02/01
7.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

VGG、ResNet、GoogleNet网络理论

本文作者:馬立 分享嘉宾:白浩杰 文章整理:马立辉 内容来源:百度云智学院 导读: 计算机视觉领域涉及许多不同任务,对于图像分类任务,人类一直在追求更高的分类精度,期间衍生了许多有代...

百度开发者中心
03/09
17
0
OSChina 周三乱弹 —— 小姐姐的领带有点带歪了,请帮忙正一下

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《アイタクテ -voice & piano-》- 和紗 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
21
0
对象名称前的单下划线和双下划线是什么意思?

问题: Can someone please explain the exact meaning of having leading underscores before an object's name in Python? 有人可以解释一下在Python中对象名称前加下划线的确切含义吗? ......

技术盛宴
今天
29
0
Redis命令行参数大全

[TOC] Redis命令行参数大全 CLI工具的类型 可执行文件 作用 redis-server Redis Srver相关 redis-cli Redis命令行工具 redis-benchmark 基准测试工具 redis-check-aof AOF持久化文件检测工具...

我爱吃炒鸡
今天
20
0
RHEL8和CentOS8怎么重启网络

RHEL8和CentOS8怎么重启网络 本文主要讲解如何重启RHEL 8或者CentOS 8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL 8或者 CentOS 8,重启启动网络时,会出现以下...

独钓渔
今天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部