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.
Here is how i trying:
public class Wita {
static Logger logger;
public static void main(String[] args) {
System.setProperty("log4j.configuration", new File("").getCanonicalPath()+File.separatorChar+"resources"+File.separatorChar+"log4j.xml" );
// System.out.println( System.getProperty("log4j.configuration") );
logger = Logger.getLogger(Wita.class.getName());
}
}
System out prints the C:\Users\roncsak\eclipse_workspace\WITA\resources\log4j.xml which is good. WITA is the base folder of the project. But running the project with -Dlog4j.debug argument the following returns also:
log4j: Trying to find [C:\Users\roncsak\eclipse_workspace\WITA\resources\log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@18e3e60. log4j: Trying to find [C:\Users\roncsak\eclipse_workspace\WITA\resources\log4j.xml] using sun.misc.Launcher$AppClassLoader@18e3e60 class loader. log4j: Trying to find [C:\Users\roncsak\eclipse_workspace\WITA\resources\log4j.xml] using ClassLoader.getSystemResource(). log4j: Could not find resource: [C:\Users\roncsak\eclipse_workspace\WITA\resources\log4j.xml].
I would like to change the log4j.xml over time, without building another jar file. How can I do that?
From "Default Initialization Procedure" at http://logging.apache.org/log4j/1.2/manual.html:
So you need to prepend
file:
tolog4j.configuration
property value in order that it can be treated as URL.See https://stackoverflow.com/a/7927278/603516.
Even better code:
All these above answer didn't satisfy so I post here for someone who might needs this in the future:
Programatically:
Hope this helps.
You can set VM argument :
-Dlog4j.configuration='path_to_log4j.xml'
or programatically :