我正在寻找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的数据源?有没有一种方法来整合这部分?
发布于 2013-04-27 04:38:29
您可以扩展JDBCAppender类并覆盖"getConnection(Connection con)“方法。上面写着:
“覆盖此选项以链接到您的连接池系统。”
在Spring文件中创建一个bean,以编程方式配置Log4j (f.e.参见here),添加新的附加器并注入之前的池连接。
发布于 2013-04-27 04:33:16
log4j的目的不是做你想做的事情。
但是您可以使用PropertyPlaceholderConfigurer类将部署详细信息外部化到一个属性文件中,并通过一种特殊的格式-变量${}从bean配置文件访问。
Spring文件
<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=passwordhttps://stackoverflow.com/questions/16244719
复制相似问题