I have an Eclipse Java Project which uses log4j. I can\'t set the log4j configuration file to be accessed by file path. I have to export and run the project in a jar.
He
From "Default Initialization Procedure" at http://logging.apache.org/log4j/1.2/manual.html:
- Set the resource string variable to the value of the log4j.configuration system property. The preferred way to specify the default initialization file is through the log4j.configuration system property. In case the system property log4j.configuration is not defined, then set the string variable resource to its default value "log4j.properties".
- Attempt to convert the resource variable to a URL.
- If the resource variable cannot be converted to a URL, for example due to a MalformedURLException, then search for the resource from the classpath by calling org.apache.log4j.helpers.Loader.getResource(resource, Logger.class) which returns a URL. Note that the string "log4j.properties" constitutes a malformed URL. See Loader.getResource(java.lang.String) for the list of searched locations.
So you need to prepend file:
to log4j.configuration
property value in order that it can be treated as URL.
See https://stackoverflow.com/a/7927278/603516.
Even better code:
System.setProperty("log4j.configuration", new File("resources", "log4j.xml").toURL());