I'm having some problems putting my log4j.properties file on classpath. I can use it when I'm developing (Eclipse Indigo) but, when I export my app as a JAR, I can't.
I've made by hand a MANIFEST.MF file for the exported JAR:
Manifest-Version: 1.0
Main-Class: main.Program
Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar
And then with put the JAR on this file organization:
folder
|-------- app.jar
|-------- lib
|--------- log4j.properties
|--------- log4j-1.2.15.jar
When I try to run app.jar, they find log4j.jar but not log4j.properties:
log4j:WARN No appenders could be found for logger (main.Program).
log4j:WARN Please initialize the log4j system properly.
My log4j.properties file it's like this:
log4j.rootLogger=INFO, stdout, file
PATTERN=[%d] [%p] [%c{1}]: %m%n
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=${PATTERN}
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File=${logger_file_path}
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=${PATTERN}
There are three ways l know.
log4j.properties
toapp.jar
log4j.properties
to the "folder" (where the JAR exists) and change the class-path to.lib/log4j-1.2.15.jar
.log4j.properties
to the folder named "conf" for example, and change the class-path to./conf/
.I have tried, it works.
Add
log4j.properties
toapp.jar
.one more way to do this:
-Dlog4j.configuration=file:"./log4j.properties"
try to execute:
javar -jar -Dlog4j.configuration=file:"./log4j.properties" app.jar
I tried the answer of Jesper, and at first it didn't work. Then I tried with
And it worked after that.
Do not put the
log4j.properties
itself in the classpath, but the directory that contains that file.