2013-04-26 2 views
3

Я ищу какую-то интеграцию между весной и Log4J, потому что у меня есть подключение к базе данных в Spring:Написать 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 регистра в базе данных .... Как я могу использовать источник данных Spring в моем Log4J? есть способ интегрировать эту часть ?.

ответ

0

Вы можете расширить класс JDBCAppender и переопределить метод getConnection (Connection con). Там он говорит:

«Переопределите это, чтобы связать вашу систему пула соединений».

сделать боб в файле Spring, настройка Log4j программно (F.E. см here), добавьте новый Appender и перед впрыскивать пул соединения.

+0

Привет, Стефан, Это ответ. Большое спасибо!. – user2325251

0

Это не цель log4j делать то, что вы хотите сделать.

Но вы можете использовать PropertyPlaceholderConfigurer класс экстернализовать детали развертывания в свойства файла, и доступ из файла конфигурации боба через специальный формат - $ {переменная}.

весна файл

<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