gpt4 book ai didi

java - 如何将 log4j.properties 移动到 jar 文件之外?

转载 作者:搜寻专家 更新时间:2023-10-31 20:10:49 24 4
gpt4 key购买 nike

我用 gradle 构建了一个 jar 文件,我的应用程序使用 log4j。最初,我的 log4j.properties 嵌入到我的 jar 文件中。我将它移到外面以便能够在生产中对其进行修改。我更新了嵌入在我的 jar 文件中的 META-INF/MANIFEST.MF 文件以反射(reflect)这一点:

Class-Path: lib/log4j-1.2.1 lib/slf4j-api-1.4.2.jar
lib/slf4j-api-1.5.6.jar lib/slf4j-log4j12-1.5.6.jar
lib/log4j-1.2.14.jar
...
lib/log4j.properties

我的文件树在windows7 32位机器上如下:

root/myapp.jar
root/lib/log4j.properties

我用这个命令启动我的应用程序:

java -Dlog4j.configuration='lib\log4j.properties' -Dlog4j.debug=true -jar myapp.jar > logs/output.log

我的 logs/output.log 说 log4j 找不到它的属性文件:

log4j: Trying to find ['lib\log4j.properties'] using context classloader sun.misc.Launcher$AppClassLoader@17fa65e.
log4j: Trying to find ['lib\log4j.properties'] using sun.misc.Launcher$AppClassLoader@17fa65e class loader.
log4j: Trying to find ['lib\log4j.properties'] using ClassLoader.getSystemResource().
log4j: Could not find resource: ['lib\log4j.properties'].

我也尝试过:

-Dlog4j.configuration='lib/log4j.properties'
-Dlog4j.configuration='log4j.properties'
-Dlog4j.configuration=log4j.properties

当我将文件嵌入到 jar 中时,它起作用了:

log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@18385e3.
log4j: Using URL [jar:file:/C:/Users/User/Desktop/myapp/myapp.jar!/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL jar:file:/C:/Users/User/Desktop/myapp/myapp-2.1.9.jar!/log4j.properties
log4j: Parsing for [root] with value=[debug, A].

但我需要在外面...有什么想法吗?

最佳答案

试试这个:

-Dlog4j.configuration=file:lib/log4j.properties

但我很好奇: list 中的类路径定义真的有效吗? jar ,是的,这是标准的,但它也适用于 log4j.properties 吗?

关于java - 如何将 log4j.properties 移动到 jar 文件之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com