`

给log4j配上proxool数据库连接池

阅读更多
连接池使用proxool。

一、先写个辅助类
package com.wallimn.util;

import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import org.logicalcobwebs.proxool.configuration.PropertyConfigurator;

/**
 * 
 * 数据库连接管理类<br/>
 * 编码:wallimn 时间:2009-1-5 下午08:10:52<br/>
 * 版本:V1.0<br/>
 */
public class DbManager {

	private static DbManager manager = new DbManager();

	static{
		URL url = ClassLoader.getSystemResource("proxool.properties");
		try {
			String fileName = url.getPath();
			PropertyConfigurator.configure(fileName);
			System.out.println("连接配置文件:"+fileName);
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	public static DbManager getInstance() {
		return manager;
	}

	public Connection getConnection() {
		Connection connection = null;
		try {
			Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
			connection = DriverManager.getConnection("proxool.proxool-pool");

		} catch (Exception e) {
			e.printStackTrace();
		}
		return connection;
	}
}


二、自已定义一JDBCAppender
package com.wallimn.util;

import java.sql.Connection;
import java.sql.SQLException;
import org.apache.log4j.jdbc.JDBCAppender;

public class JDBCPoolAppender extends JDBCAppender {

    public JDBCPoolAppender() {  
        super();  
    }  
	@Override
	protected Connection getConnection() throws SQLException {
		return DbManager.getInstance().getConnection();
	}

}


三、LOG4J配置文件(log4j.properties)
log4j.rootLogger=ERROR,stdout
log4j.logger.SYSTEM = INFO,JDBC

#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=debug
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %5p [%c] - %m%n

#jdbc
log4j.appender.JDBC=com.wallimn.util.JDBCPoolAppender
log4j.appender.JDBC.threshold=ERROR
#注,这句不换行。
log4j.appender.JDBC.sql=INSERT INTO XT_SYS_LOG(USERID,LOGTIME,LOGLEVEL,LOGACTION,LOGMESSAGE)
VALUES(%X{userId},sysdate,'%p','%l','%m')
#建表SQL
############################################################
#create table xt_sys_log(userid integer,
#logtime date default sysdate,
#loglevel varchar2(5),
#logaction varchar2(255),
#logmessage varchar2(2000));
############################################################

四、proxool配置文件(proxool.properties)
jdbc-0.proxool.alias=proxool-pool
jdbc-0.proxool.driver-url=jdbc:oracle:thin:@127.0.0.1:1521:swdb
jdbc-0.proxool.driver-class=oracle.jdbc.driver.OracleDriver
jdbc-0.user=scott
jdbc-0.password=tiger
jdbc-0.proxool.house-keeping-sleep-time=40000
jdbc-0.proxool.house-keeping-test-sql=select 1 from dual
jdbc-0.proxool.minimum-connection-count=10
jdbc-0.proxool.maximum-connection-count=100
jdbc-0.proxool.maximum-connection-lifetime=600000
jdbc-0.proxool.maximum-active-time=600000
jdbc-0.proxool.simultaneous-build-throttle=20
jdbc-0.proxool.recently-started-threshold=40000
jdbc-0.proxool.overload-without-refusal-lifetime=60000
jdbc-0.proxool.verbose=true
jdbc-0.proxool.trace=true
jdbc-0.proxool.fatal-sql-exception=Fatalerror
jdbc-0.proxool.prototype-count=2

五、测试代码
package com.wallimn.test;

import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import junit.framework.TestCase;

public class Log4JTest extends TestCase {

	public void testLog1() {
		Logger logger = Logger.getLogger("SYSTEM");
		// System.out.println(Log4JTest.class);
		System.out.println("继承:" + logger.getAdditivity());
		System.out.println("级别:" + logger.getLevel());
		System.out.println("有效的级别:" + logger.getEffectiveLevel());
		MDC.put("userId", "11");
		logger.fatal("test_fatal");
		logger.error("test_Error");
		logger.warn("test_warn");
		logger.info("test_Info");
		logger.debug("test_debug");
		MDC.remove("userId");
	}
}


用到的jar包:
ojdbc14.jar             
log4j-1.2.16.jar        
proxool-0.9.1.jar       
proxool-cglib.jar       
commons-logging.jar     
junit.jar

wallimn原创,文章地址:http://wallimn.iteye.com/blog/1538173
2
1
分享到:
评论

相关推荐

    关于proxool数据库连接池的配置集合

    本篇文章将深入探讨Proxool数据库连接池的配置及其重要性。 首先,理解Proxool的基本概念是必要的。Proxool是Proxy + Pool的组合,它通过代理(Proxy)机制来管理数据库连接,使得应用程序可以透明地使用连接池。...

    c3p0、proxool、dbcp数据库连接池

    本文将深入探讨三个常用的数据库连接池:C3P0、DBCP和Proxool,以及如何结合Log4j2进行日志记录。 ### C3P0 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的核心...

    ssh2简单案例,注解+proxool连接池+sf4j记录日志

    接下来是Proxool连接池,它是一个开源的数据库连接池,用于管理数据库连接,提高数据库访问性能。Proxool通过复用已存在的数据库连接,减少创建和关闭连接的开销,从而提高了系统的效率。在Java应用程序中,开发者...

    在Hibernate中配置Proxool连接池

    Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池实现。本篇将详细介绍如何在Hibernate中配置Proxool连接池。 首先,我们需要在Spring的配置文件`applicationContext.xml`中设置SessionFactory ...

    java红数据连接池包下载

    总结来说,Java中的Proxool数据库连接池是一个强大的工具,通过优化数据库连接的管理,提高了应用程序的运行效率。正确配置和使用Proxool,可以有效地降低系统资源消耗,同时保证数据库操作的稳定性和响应速度。

    关于JAVA的数据库连接池的探讨.pdf

    "JAVA数据库连接池的探讨" 本文探讨了JAVA中的数据库连接池,首先提出了性能问题,然后针对该问题进行了调查,并找到 原因:是数据源配置引起的,进一歩对带连接池的数据源进行了总结。本文还提供了一个方向,并且...

    R2高性能数据库连接池v1.6源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。...

    R2高性能数据库连接池v1.8改进版源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    R2高性能数据库连接池v1.7源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    proxool源码

    Proxool是一个开源的、基于Java的数据库连接池,它在2003年由iBatis(现在的MyBatis)团队开发并维护,旨在提供一个轻量级、高效的数据库连接管理解决方案。在深入研究Proxool源码之前,我们先了解一下数据库连接池...

    proxool-0.9.1.jar commons-logging.jar

    首先,`proxool-0.9.1.jar`是Proxool数据库连接池的实现库,它是一个开源的、轻量级的Java连接池解决方案。Proxool允许开发者在应用中使用多个数据库连接,并通过池化技术来减少创建和销毁数据库连接的开销。这个...

    spring log4j配置文件资料

    在 `spring proxool hibernate` 这个上下文中,Proxool 是一个数据库连接池,而 Hibernate 是一个流行的 ORM(对象关系映射)框架。在 Spring 中整合这两个框架,Log4j 配置可以帮助我们追踪数据库操作的细节,如 ...

    R2高性能数据库连接池v1.8源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    proxool部署说明.pdf

    ### Proxool数据库连接池部署知识点详解 #### 一、Proxool简介及核心功能 Proxool是一个轻量级的开源数据库连接池组件,专为Java应用程序设计,旨在优化数据库连接管理,提高应用程序的性能和响应速度。通过提供一...

    dom4j、common-fileupload、hibernate、jdom、log4j、proxool、spring、struts、webwork等工具、框架源码

    6. **Proxool**: Proxool是一个数据库连接池实现,它可以有效地管理和重用数据库连接,提高系统性能,减少资源浪费。通过Proxool,开发者可以轻松地在应用中集成数据库连接管理。 7. **Spring**: Spring是一个全面...

    proxool-0.9.1.jar

    Proxool是数据库连接池的一个开源解决方案,它为应用程序提供了一种高效且灵活的方式来管理和重用数据库连接。在这个0.9.1版本中,我们可以期待一些稳定性和性能的改进。 数据库连接池在Java应用中扮演着关键角色,...

    DRUID连接池的实用 配置详解

    DRUID是阿里巴巴开源的一款数据库连接池组件,它集合了C3P0、DBCP、PROXOOL等其他数据库连接池的优点,并在此基础上增加了日志监控功能,使得用户能够更好地监控数据库连接池的状态以及SQL语句的执行情况。...

    hibernate+proxool+Oracle库文件

    proxool-cglib.jar和proxool-0.9.1.jar是Proxool的相关库,Proxool是一个轻量级的数据库连接池。它管理数据库连接,提供连接重用,避免了频繁创建和关闭连接带来的性能损耗。Proxool与Hibernate结合使用,可以提高...

    proxool-091.rar

    Proxool是一个轻量级、高性能的数据库连接池,其0.9.1版本是本次讨论的重点。 首先,我们需要了解为什么需要连接池。数据库连接的建立和关闭是相对耗时的过程,频繁的创建和销毁会导致系统性能下降。连接池通过复用...

Global site tag (gtag.js) - Google Analytics