2009-08-15

Loading Log4j Configuration File at Custom Position

Log4j automatically loads configuration file named log4j.properties or log4j.xml on one of top directories in classpath at initialization. For example, if your classpath is /foo:/foo/bar.jar, /foo/log4j.properties would be automatically configured.

But if you should use different name or position, for example /foo/log4j-test.properties or /foo/baz/qux/log4j.properties, there are two methods.

Using log4j.configuration system property

Load the application specifying explicitly the Log4j configuration file to use using log4j.configuration system property.

java -Dlog4j.configuration=baz/qux/log4j.properties MyApplication.java

Note that the value should be relative to classpath. It is not /foo/baz/qux/log4j.properties but baz/qux/log4j.properties.

Using Configurator.configure method

Before configruing proper Configurator, call static LogManager.resetConfiguration method.

import org.springframework.core.io.ClassPathResource;
...
Properties props = new Properties();
props.load((new ClassPathResource("baz/qux/log4j.properties"))
           .getInputStream());
org.apache.log4j.LogManager.resetConfiguration();
org.apache.log4j.PropertyConfigurator.configure(props);  

1 comments:

Post a Comment