外部log4j.xml文件

jav*_*y79 41 java logging log4j

我试图在jar外面的文件系统上运行带有log4j.xml文件的jar,如下所示:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2
Run Code Online (Sandbox Code Playgroud)

log4j.xml文件与jar(/ opt/companyName/pathToJar /)位于同一目录中,但我仍然收到标准警告消息:

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)

是否可以将配置文件放在jar外面,或者我是否必须将它与jar打包?

TIA

Jas*_*Day 52

使用-jar开关启动可执行jar文件时,将从jar文件的清单中获取类路径.-cp如果给定,则忽略该开关.

Jeff Storey的答案将是最简单的解决方案.或者,您可以Class-Path向jar文件的清单添加属性.

编辑 尝试启用log4j调试,并创建log4j.xml一个完全限定的URL 的路径.例如:

java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...
Run Code Online (Sandbox Code Playgroud)

  • 这对我有帮助,文件属性是我遗漏的东西 (3认同)

tib*_*ibi 18

这工作:

java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar
Run Code Online (Sandbox Code Playgroud)


r00*_*GER 14

对于log4j2,请使用configurationFile选项:

java -Dlog4j.configurationFile=/path/to/log4j2.xml -jar ...
Run Code Online (Sandbox Code Playgroud)

http://logging.apache.org/log4j/2.0/manual/configuration.html


Jef*_*rey 8

你有没有尝试过 java -Dlog4j.configuration=/path/to/log4j.xml -jar <rest-of-args>

  • 需要文件:在路径前面 (2认同)

Kor*_*clü 6

您可以在jar中定义默认属性文件.如果未定义自定义属性,则可以使用此默认文件.如果定义了自定义属性,则可以覆盖默认属性.

myjar.jar文件包含log4j.default.configuration

您可以使用此参数运行程序以启动应用程序

java  -jar -Dlog4j.configuration=log4j.properties  target\yourfile-v01_000_01_c002.jar
Run Code Online (Sandbox Code Playgroud)

示例代码

public static void main(String[] args) {
    String filename = System.getProperty("log4j.configuration");
    if(null==filename||filename.trim().equals("")) {
        logger.info("Using default log4j configuration log4j.default.properties.");
        logger.info("If you would like to change the default configuration please add following param before startup -Dlog4j.configuration=<log4jfile>");
        PropertyConfigurator.configure( Main.class.getResourceAsStream("/log4j.default.properties"));
    } else {
        File file = new File(filename);
        if(!file.exists()) System.out.println("It is not possible to load the given log4j properties file :"+file.getAbsolutePath());
        else PropertyConfigurator.configure(file.getAbsolutePath());

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这适用于.properties文件.如果使用.xml配置文件,则使用DOMConfigurator而不是PropertyConfigurator. (2认同)