我正在寻找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的数据源?有一种方法可以整合这部分吗?。
答案 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并注入之前的池连接。