Richtig mit Log4jConfigurer im Frühjahr

In unserer Anwendung haben wir beschlossen, name der log4j Konfigurationsdatei, wie Sie einen benutzerdefinierten Namen zu vermeiden versehentliche laden der default-Datei von einem anderen Glas. Um dies zu konfigurieren, verwenden wir org.springframework.util.Log4jConfigurer angeben, die log4j-Speicherort.

<bean
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass">
        <value>org.springframework.util.Log4jConfigurer</value>
    </property>
    <property name="targetMethod">
        <value>initLogging</value>
    </property>
    <property name="arguments">
        <list>
            <value>classpath:com/kilo/custom-log4j.xml</value>
        </list>
    </property>
</bean>

Dies hilft auch, um die Konfiguration in den code und lass uns ein neuer Entwickler auf dem Boden ausgeführt (anstatt halten Sie es in einigen setenv.sh für den container und separat für die test-Fälle). So weit wir waren so glücklich, bis wir entdeckten, dass einige wertvolle Protokollierung aus dem Spring-container selbst war, verpasste aufgrund dieser.

[ 2012-09-05 00:16:43,188 [main] support.DefaultListableBeanFactory.registerBeanDefinition():618  INFO ]: Overriding bean definition for bean 'beanA': replacing [Generic bean: class [com.kilo.spring.context.log.ClassA]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [com/kilo/spring/context/log/spring-application-context-2.xml]] with [Generic bean: class [com.kilo.spring.context.log.ClassA]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [com/kilo/spring/context/log/spring-application-context-1.xml]]
[ 2012-09-05 00:16:43,235 [main] support.DefaultListableBeanFactory.preInstantiateSingletons():555  INFO ]: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@8453227: defining beans [org.springframework.beans.factory.config.MethodInvokingFactoryBean#0,beanB,beanA]; root of factory hierarchy

Wenn ich konfiguriert den Namen über die Eigenschaft system log4j.configuration ich bin in der Lage, um zu sehen, die Protokolle. Ich denke, das kann gehen Weg, wenn wir setzen die Konfiguration als statischen block in eine der Klassen -, sondern in einer web-Anwendung, dies schien seltsam zu tun.
Alle anderen tricks, die ich verwenden könnte? Fühlen Sie sich frei, auf jegliche/alle falsche Paradigmen, bin ich hier Folgendes.

Vielen Dank im Voraus!

InformationsquelleAutor Kilokahn | 2012-09-05
Schreibe einen Kommentar