通过 JVM 参数设置 log4j 属性文件 - 为什么顺序很重要?

Setting log4j properties file via JVM argument - why does order matter?

我构建了一个 jar 文件,其中有一个 log4j.properties 文件(mvn package 默认情况下将它放在 resources 目录中)。但是当我 运行 这个 jar 文件时,我想传递一个不同的日志配置,所以我添加 -Dlog4j.configuration=file:{path to file}。困扰我的问题是这里的顺序如下:

我对类路径在 java 中的工作方式有粗略的了解,如果我加载多个具有相同名称的 java 类,就会有所不同。但是通过这种方式,我传递了一个带有 -D 前缀的配置参数,所以我希望它起作用的方式是 log4j 库中的一些代码检查是否设置了 -Dlog4j.configuration 以及是否设置了,然后从那里加载配置,否则尝试在类路径中找到它。

关于我遗漏的任何想法?

如果您在命名 JAR 文件后提供任何内容,它将被视为您的 main 方法的参数。对于 Log4J,您实际上必须定义一个 属性,这需要在您指定 -jar.

之前完成