2010-11-22 4 views
3

J'ai une application Web Java qui utilise la façade de journalisation SLF4J. À ce jour, nous utilisons l'implémentation de Log4J en dessous (bien que nous envisagions un passage à Logback). Log4J est actuellement configuré via un fichier de configuration log4j.xml placé à la racine de notre classpath.Contrôle de l'emplacement du fichier journal via JNDI au printemps?

Dans tous les cas, nous utilisons JNDI pour configurer d'autres aspects de notre application, donc je suis très familier avec la façon de configurer cela et de tirer une chaîne de JNDI dans un fichier de configuration Spring. Cependant, je n'arrive pas à comprendre comment créer un appendeur Log4J à partir d'un fichier de configuration Spring. Mieux encore, peut-on complètement configurer Log4J via Spring et ignorer complètement le fichier de configuration log4j.xml? J'espère que je n'ai pas à faire cela par programme.

J'ai trouvé une classe Spring appelée Log4jWebConfigurer mais cela nécessite que le fichier WAR s'exécute (ne le souhaite pas si je peux l'aider) et aussi que le fichier journal réside dans le répertoire de l'application web (ne veut surtout pas cette).

Répondre

2

d'abord obtenir le répertoire principal via JNDI:

<jee:jndi-lookup id="myAppHome" jndi-name="myAppHome" /> 

Ensuite, utilisez le grain de café dans une déclaration de la langue d'expression de printemps dans la la manière suivante:

<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" /> 
    <property name="targetMethod" value="initLogging" /> 
    <property name="arguments"> 
     <list> 
      <value>#{ myAppHome + '/conf/log4j.xml'}</value> 
     </list> 
    </property> 
</bean> 
Questions connexes