I am trying to run a jar with the log4j.xml file on the file system outside the jar like so:
java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2
I have also tried:
java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2
The log4j.xml is file is in the same directory as the jar (/opt/companyName/pathToJar/), yet I still get the standard warning message:
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle). log4j:WARN Please initialize the log4j system properly.
Is it possible to have the config file outside the jar, or do I have to package it with the jar?
TIA
This logging system is configured by placing the log4j. xml file in the web application's WEB-INF/classes folder and by specifying the log output path for appenders and the level of logging.
In the log4j2 architecture, an appender is basically responsible for sending log messages to a certain output destination. Here are some of the most useful types of appenders that the library provides: ConsoleAppender – logs messages to the System console. FileAppender – writes log messages to a file.
When using the -jar
switch to launch an executable jar file, the classpath is obtained from the jar file's manifest. The -cp
switch, if given, is ignored.
Jeff Storey's answer is going to be the easiest solution. Alternatively, you could add a Class-Path
attribute to the jar file's manifest.
EDIT Try enabling log4j debugging, and making the path to log4j.xml
a fully-qualified URL. For example:
java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With