2016-04-19 5 views
3

Ich versuche, log4j für die Protokollierung in der Datenbank mit JDBCAppender zu konfigurieren, indem ich auf den folgenden Link verweise.log4j Typ GenericObjectPool akzeptiert keine Parameter

http://logging.apache.org/log4j/2.x/manual/appenders.html#JDBCAppender

Jedoch habe ich die Störung erhalte „Typ GenericObjectPool nehmen keine Parameter“. Könnte mir bitte jemand helfen, diesen Fehler zu beheben?

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="error"> 


<Appenders> 
    <JDBC name="databaseAppender" tableName="LOGGING.APPLICATION_LOG"> 
     <ConnectionFactory class="net.example.db.ConnectionFactory" method="getDatabaseConnection" /> 
     <Column name="EVENT_ID" literal="LOGGING.APPLICATION_LOG_SEQUENCE.NEXTVAL" /> 
     <Column name="EVENT_DATE" isEventTimestamp="true" /> 
     <Column name="LEVEL" pattern="%level" /> 
     <Column name="LOGGER" pattern="%logger" /> 
     <Column name="MESSAGE" pattern="%message" /> 
     <Column name="THROWABLE" pattern="%ex{full}" /> 
    </JDBC> 
    </Appenders> 
    <Loggers> 
    <Root level="warn"> 
     <AppenderRef ref="databaseAppender"/> 
    </Root> 
    </Loggers> 
</Configuration> 

ConnectionFactory.java

import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.Properties; 

import javax.sql.DataSource; 

import org.apache.commons.dbcp.DriverManagerConnectionFactory; 
import org.apache.commons.dbcp.PoolableConnection; 
import org.apache.commons.dbcp.PoolableConnectionFactory; 
import org.apache.commons.dbcp.PoolingDataSource; 
import org.apache.commons.pool.impl.GenericObjectPool; 

public class ConnectionFactory { 
    private static interface Singleton { 
     final ConnectionFactory INSTANCE = new ConnectionFactory(); 
    } 

    private final DataSource dataSource; 

    private ConnectionFactory() { 
     Properties properties = new Properties(); 
     properties.setProperty("user", "logging"); 
     properties.setProperty("password", "abc123"); // or get properties from some configuration file 

     GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<PoolableConnection>(); //Error: type GenericObjectPool does not take parameters 
     DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
       "jdbc:mysql://example.org:3306/exampleDb", properties 
     ); 
     new PoolableConnectionFactory(
       connectionFactory, pool, null, "SELECT 1", 3, false, false, Connection.TRANSACTION_READ_COMMITTED 
     ); 

     this.dataSource = new PoolingDataSource(pool); 
    } 

    public static Connection getDatabaseConnection() throws SQLException { 
     return Singleton.INSTANCE.dataSource.getConnection(); 
    } 
} 
+0

dasselbe Problem, irgendwelche Lösungen? – Kjenos

Antwort

1

Ausgabe wurde von mir gelöst.

Ich habe Maven Abhängigkeit hinzugefügt es funktioniert gut für mich.

<dependency> 
     <groupId>commons-pool</groupId> 
     <artifactId>commons-pool</artifactId> 
     <version>1.6</version> 
    </dependency> 
Verwandte Themen