Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

External log4j.xml file

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

like image 321
javamonkey79 Avatar asked Apr 07 '10 17:04

javamonkey79


People also ask

Where should log4j xml files be stored?

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.

How does log4j2 xml work?

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.


1 Answers

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 ... 
like image 116
Jason Day Avatar answered Oct 11 '22 13:10

Jason Day