我已经构建了一个jar文件,其中包含log4j.properties
文件(mvn package
默认将其放在resources
目录中)。但是当我运行这个jar文件时,我想传递一个不同的日志配置,所以我添加了-Dlog4j.configuration=file:{path to file}
。让我感到困惑的问题是这个命令在这里很重要:
java -jar {path to jar} -Dlog4j.configuration=file:{path to file}
时,它会读取jar中打包的日志文件。java -Dlog4j.configuration=file:{path to file} -jar {path to jar}
时,它会从我在参数中传递的文件中读取配置。我粗略地理解类路径如何在java中工作,如果我要加载几个具有相同名称的java类,它会有所不同。但是这样我传递一个带有-D
前缀的配置参数,所以我希望这个工作的方式是log4j
库中的一些代码来检查是否设置了-Dlog4j.configuration
,如果是的话,然后从那里加载配置,否则尝试在类路径上找到它。
关于我缺少的任何想法?
答案 0 :(得分:2)
如果在命名JAR
文件后提供任何内容,则会将其视为main
方法的参数。对于Log4J,您实际上必须定义一个属性,这需要在指定-jar
之前完成。