配置log4j配置数据库连接池(以dbcp连接池为例),并将log信息存储在数据库中(以mysql为例)

上一篇中是以单一数据库配置为例,这一篇主要是讲如何将log4j中的数据库配置改成数据库连接池。


1.准备相关jar包

log4j-1.2.16.jar

mysql-conector-java-5.1.22.jar

commons-dbcp-1.4.jar

commons-pool-1.5.4.jar

以上这些都是maven仓库自己对应的依赖,我都下好了,你们直接在下边的实例连接地址中下载即可。


2.配置dbcp数据源 dbcp_jdbc.properties

------------------------------------------------------------------------------------------------

#\u8FDE\u63A5\u8BBE\u7F6E
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=test
password=test
 
#<!-- \u521D\u59CB\u5316\u8FDE\u63A5 -->
initialSize=10
 
#\u6700\u5927\u8FDE\u63A5\u6570\u91CF
maxActive=50
 
#<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 -->
maxIdle=20
 
#<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 -->
minIdle=5
 
#<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 6000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 -->
maxWait=60000
 
 
#JDBC\u9A71\u52A8\u5EFA\u7ACB\u8FDE\u63A5\u65F6\u9644\u5E26\u7684\u8FDE\u63A5\u5C5E\u6027\u5C5E\u6027\u7684\u683C\u5F0F\u5FC5\u987B\u4E3A\u8FD9\u6837\uFF1A[\u5C5E\u6027\u540D=property;] 
#\u6CE8\u610F\uFF1A"user" \u4E0E "password" \u4E24\u4E2A\u5C5E\u6027\u4F1A\u88AB\u660E\u786E\u5730\u4F20\u9012\uFF0C\u56E0\u6B64\u8FD9\u91CC\u4E0D\u9700\u8981\u5305\u542B\u4ED6\u4EEC\u3002
connectionProperties=useUnicode=true;characterEncoding=utf8
 
#\u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u81EA\u52A8\u63D0\u4EA4\uFF08auto-commit\uFF09\u72B6\u6001\u3002
defaultAutoCommit=true
 
#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u53EA\u8BFB\uFF08read-only\uFF09\u72B6\u6001\u3002
#\u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\u8BE5\u503C\uFF0C\u5219\u201CsetReadOnly\u201D\u65B9\u6CD5\u5C06\u4E0D\u88AB\u8C03\u7528\u3002\uFF08\u67D0\u4E9B\u9A71\u52A8\u5E76\u4E0D\u652F\u6301\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u5982\uFF1AInformix\uFF09
defaultReadOnly=
 
#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u4E8B\u52A1\u7EA7\u522B\uFF08TransactionIsolation\uFF09\u3002
#\u53EF\u7528\u503C\u4E3A\u4E0B\u5217\u4E4B\u4E00\uFF1A\uFF08\u8BE6\u60C5\u53EF\u89C1javadoc\u3002\uFF09NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_COMMITTED

--------------------------------------------------------------------------------------------------------

2.重写log4j自带的JDBCAppender

重写以下两个方法即可  getConnection、closeConnection

-------------------------------------------------------------------------------------------

package com.log4j.test;


import java.sql.Connection;
import java.sql.SQLException;
import org.apache.log4j.spi.ErrorCode;




public class JDBCPoolAppender extends org.apache.log4j.jdbc.JDBCAppender {


/**数据库连接对象*/ 


protected Connection connection;  


public JDBCPoolAppender() {  
super();  
}  


@Override 
protected void closeConnection(Connection con) {  
try {  
if (connection != null && !connection.isClosed())  
connection.close();  
} catch (SQLException e) {  
errorHandler.error("Error closing connection", e, ErrorCode.GENERIC_FAILURE);  
}  
}  


@Override 
protected Connection getConnection() throws SQLException {  
try {
connection=JdbcUtils.getConnection();
} catch (Exception e) {  
System.out.println(e.getMessage());  
}  
return connection;  
}  

}


3.配置log4j.properties配置文件


------------------------------------------------------------------------------------------------

log4j.rootLogger=INFO,appender1,appender2,appender3


log4j.logger.org.springframework=ERROR


log4j.appender.appender1=org.apache.log4j.ConsoleAppender 
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n


log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.File=log/IceColdMonitor.log
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
#database
#log4j.appender.appender3=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.appender3.driver=com.mysql.jdbc.Driver
#log4j.appender.appender3.URL=jdbc:mysql://127.0.0.1:3306/test
#log4j.appender.appender3.user=test
#log4j.appender.appender3.password=test
#log4j.appender.appender3.sql=INSERT INTO logging (log_date, log_level, location, message) VALUES ('%d{yyyy-MM-dd hh:mm:ss}','%p','%c','%m')
#database pool
log4j.appender.appender3=com.log4j.test.JDBCPoolAppender
log4j.appender.appender3.sql=INSERT INTO logging (log_date, log_level, location, message) VALUES ('%d{yyyy-MM-dd hh:mm:ss}','%p','%c','%m')

------------------------------------------------------------------------------------------------------

以上demo列子源码下载地址为:http://download.csdn.net/detail/frank0417/5322972

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值