[Log4j]AsyncAppender warpant un JDBCAppender
Bonjour!
Je cherche à exécuter un JDBCAppender en parallèle du thread principal du programme. Je me suis donc porté sur l'AsyncAppender.
Le mécanisme fonctionne, la solution non.
je m'explique : Le temps que je récupère la connexion à la BDD dans le thread secondaire, le thread main arrive à la fin du traitement demandé et se ferme, entrainant avec lui la fin du thread secondaire, et donc le non-enregistrement du log en base.
Je cherche donc à savoir si il n'existerait pas une propriété pour l'AsyncAppender du genre daemon, qui permettrait aux thread secondaire de continuer à tourner après la fin du thread principal.
La seconde solution à laquelle j'ai pensé est de faire mon propre AsyncAppender, en modifiant légèrement la méthode run du dispatcher associé afin d'attendre la fin des threads secondaires
Au cas où j'aurais fait une bêtise je joins le log4j.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
|
<appender name="JDBCAppender" class="com.almerys.slf4jtodb.customAppenders.JDBCDefaultAppender">
<param name="URL" value="jdbc:db2://localhost:50000/SLF4JDB" />
<param name="driver" value="com.ibm.db2.jcc.DB2Driver" />
<param name="user" value="db2Express-CAdmin" />
<param name="password" value="motdepasselocal" />
<param name="locationInfos" value="true" />
<param name="insertStatement" value='insert into log (log."TSTAMP", log."LEVEL", log."CLASSLINE", log."THREADNAME", log."MESSAGE") values (?, ?, ?, ?, ?)' />
<!-- <param name="datasource" value="jndi://localhost:8080/dt" /> -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p %c:%L %t %m"/>
</layout>
</appender>
<appender class="org.apache.log4j.AsyncAppender" name="async">
<param name="bufferSize" value="128" />
<appender-ref ref="JDBCAppender"/>
</appender>
<root>
<priority value="debug" />
<appender-ref ref="async" />
</root> |
merci d'avance!