2013-04-26 32 views
3

我尋找春天和Log4J的之間的一些整合,因爲我在春天我的數據庫連接:寫Log4J的數據庫

<bean id="dataSourceOracle" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.OracleDriver"/> 
     <property name="url" value="" /> 
     <property name="username" value="" /> 
     <property name="password" value=""/> 
</bean> 

,並有JDBCAppender在我的Log4J是這樣的:

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender 
log4j.appender.DB.URL=jdbc:mysql://server/db 
log4j.appender.DB.user=user 
log4j.appender.DB.password=pwd 

但是,我不想有2個寄存器到數據庫....我如何在我的Log4J中使用Spring的數據源?有一種方法來整合這部分?

回答

0

您可以擴展JDBCAppender類並覆蓋「getConnection(Connection con)」方法。它說:

「覆蓋此設置以便與您的連接池系統鏈接。」

在Spring文件使bean,配置Log4j的編程指標(如見here),添加新的appender和之前注入池連接。

+0

嗨Stefan,這是答案。非常感謝你!。 – user2325251 2013-04-29 16:57:22

0

這不是log4j做你想做的事情的目的。

但是你可以用PropertyPlaceholderConfigurer類外部化部署細節到一個屬性文件,並通過特殊格式bean的配置文件訪問 - $ {}變量

春文件

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>database.properties</value> 
    </property> 
</bean> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

創建一個屬性文件(database.properties),包括數據庫的詳細信息,把它放到你的項目類路徑。

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/test 
jdbc.username=root 
jdbc.password=password