2013-05-22 1 views
2

Nous utilisons donc log4j et voulons le mettre à jour lors de l'exécution. Nous n'appelons pas le filtre log4j de spring ou la méthode configure() de log4j. Nous mettons le log4j.properties dans la racine du classpath autant d'articles suggérés et une sorte de vaudou qui le fait se charger. Mais maintenant, nous voulons ajouter le thread de surveillance pour actualiser log4j.properties au moment de l'exécution. Je vois configureAndWatch, et je vois que spring a un paramètre timer sur son chargement de log4j, mais puisque notre log4j est chargé de façon implicite, comment puis-je initier le thread de la montre?Log4j watch & spring

Question 2 - Le thread de la montre va-t-il mettre à jour les enregistreurs alloués? Beaucoup de nos enregistreurs sont chargés dans des membres statiques. Vont-ils obtenir le changement de niveau?

Répondre

3

Utilisation org.springframework.util.Log4jConfigurer:

<util:list id="log4jProperties" list-class="java.util.ArrayList"> 
    <value>classpath:log4j.properties</value> 
    <value>10000</value> 
</util:list> 

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" 
    p:targetClass="org.springframework.util.Log4jConfigurer" 
    p:targetMethod="initLogging" 
    p:arguments-ref="log4jProperties" /> 

Cela recharger le contenu de log4j.properties toutes les 10 secondes.

+0

De quel espace de noms est-ce que votre "p" vient? – user1187719

+0

Nevermind. J'ai compris que ce ne sont que des propriétés. Je n'avais jamais fait de propriétés avant. – user1187719

+0

Oui, vous pouvez tout aussi bien utiliser les bons éléments '' si vous préférez. – kryger