[Hibernate][Log4j] lier un bean à un appender
Bonjour,
Explication du contexte en quelques mots:
Je souhaite logger des informations en BD grâce à log4j, via un appender pour Hibernate customisé.
Celui-ci utilisant les classes DAO configuré dans des bean pour Spring.
Voila mon problème, je voudrais dans la configuration de Log4J faire appel au bean pour utiliser le même application context, et ne pas en créer un nouveau.
Ma configuration actuelle de l'appender custom Log4j :
Code:
1 2 3 4 5 6
| <appender name="Hibernate" class="com.test.log.HibernateAppender">
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender> |
Ici, à la place de faire appel au bean, il va chercher la class et donc passe outre l'instanciation de mon objet via le bean, ce qui me génère une NPE.
Voila ma configuration de applicationContext.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven />
<bean id="com.test.dao.LogDAO" class="com.test.dao.jpa.LogDAOImpl" init-method="testInit"/>
<bean id="com.test.log.HibernateAppender" class="com.test.log.HibernateAppender">
<property name="logDAO" ref="com.test.dao.LogDAO" />
</bean>
[...]
</beans> |
Une solution idéale aurait été quelque chose comme :
Code:
<appender name="Hibernate" bean="beanAppender">
Avez vous une idée ?
Merci,
S.