将Log4J写入数据库

时间:2013-04-26 20:29:10

标签: database spring log4j

我正在寻找Spring和Log4J之间的一些集成,因为我在Spring中有我的数据库连接:

<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>

并在我的Log4J中有一个JDBCAppender,如下所示:

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的数据源?有一种方法可以整合这部分吗?。

2 个答案:

答案 0 :(得分:0)

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

但您可以使用PropertyPlaceholderConfigurer类将部署详细信息外部化到属性文件中,并通过特殊格式从bean配置文件访问 - $ {variable}

弹簧文件

<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

答案 1 :(得分:0)

您可以扩展JDBCAppender类并覆盖“getConnection(连接con)”方法。它说:

  

“覆盖此项以链接您的连接池系统。”

在Spring文件中创建一个bean,以编程方式配置Log4j(参见here),添加新的appender并注入之前的池连接。