论坛首页 Java版

重写JDBCAppender实现连接池输出的问题

浏览 154 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-04-24 关键字: log4j
我试图重写JDBCAppender,享用连接池实现日志输出。现在问题是每次控制台或者文件可以输出内容,并且连接池也成功初始化了。(插入测试数据成功)但工程跑起来后,却根本没有拿取过connection。

PS:用过那个增强的JDBCAppender可以在日志中可以插入测试数据,但是配置比较奇怪,不会用。

log4j.appender.JDBC=org.commons.c3p0.demo2.JDBCPoolAppender
log4j.appender.JDBC.BufferSize=4096
log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout
log4j.appender.JDBC.sql=INSERT INTO rz_log (log_date, log_level, location, message) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%-5p', '%C,%L', '%m')

log4j.logger.org.apache.jsp=info, JDBC, stdout



public class JDBCPool {
    
    private static ComboPooledDataSource cpds;

    public JDBCPool() {
        try {
            cpds = new ComboPooledDataSource();
            cpds.setDriverClass("com.mysql.jdbc.Driver");
            cpds.setJdbcUrl("jdbc:mysql://localhost:3306/anaplatform");
            cpds.setUser("root");
            cpds.setPassword("12345678");
            System.out.println(StringUtils.center("ComboPooledDataSource", 80, "="));
            System.out.println("ComboPooledDataSource:"+cpds);
        } catch (PropertyVetoException ex) {
            ex.printStackTrace();
        }
    }
    
    public Connection getConnection() throws SQLException {
        System.out.println(StringUtils.center("JDBCPool getConnection", 80, "="));
        return cpds.getConnection();
    }
}


public class JDBCPoolAppender extends JDBCAppender {

    private static JDBCPool jdbcPool = new JDBCPool();
    
    public JDBCPoolAppender() {
        super();
        System.out.println(StringUtils.center("create JDBCPoolAppender", 80, "="));
        System.out.println("bufferSize:"+this.bufferSize);
    }

    /**
     * Override 此函数来利用连接池返回一个Connetion对象
     */
    @Override
    protected Connection getConnection() throws SQLException {
        try {
            connection = jdbcPool.getConnection();
        } catch (Exception e) {
            errorHandler.error("Error opening connection", e, ErrorCode.GENERIC_FAILURE);
        }
        System.out.println(StringUtils.center("getConnection:" +connection, 80, "="));
        return connection;
    }
   
论坛首页 Java版

跳转论坛:
JavaEye推荐