从清单 Class 路径加载 logback.xml
Load logback.xml from Manifest Class-path
我正在尝试从我的可执行 myapp.jar
文件外部加载 logback.xml
文件。
myapp.jar
有一个 META-INF/MANIFEST.MF
文件,大致如下:
Manifest-Version: 1.0
Class-Path: logger-config lib/lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar
Main-Class: com.mycompany.MyAppMain
并居住在
my-app/
lib/
jcl-over-slf4j-1.7.18.jar
slf4j-api-1.7.18.jar
logger-config/
logback.xml
myapp.jar
(还有很多其他 jar 依赖项,请删除)。
现在,如果我 运行 使用 java -jar myapp.jar
的应用程序,它可以正常启动,但 不会获取 logback.xml 文件 .
来自他们的文档:
If no such file is found, it checks for the file logback.xml in the classpath..
( http://logback.qos.ch/manual/configuration.html )
我知道我可以使用 logback.configurationFile
覆盖它,但是有没有办法将 XML 文件放到类路径中,以便 logback 自动加载它?它似乎只有在我将 logback.xml
打包到 myapp.jar
(将其放在 src/main/resources
目录中)时才有效,但是配置文件将传播到使用 myapp.jar
的其他 JAR作为依赖项。
也许你只是把它剪掉了,但是你的class路径没有指定logback-classic
依赖。
您必须确保 logback
在 class 路径定义中出现在 slf4j
之前。另外,请注意 logger-config
路径的尾部斜杠 - 如果没有它,logback 将找不到您的 logback.xml
(有关详细信息,请参阅 here)。
像这样的东西应该可以工作:
Class-Path: lib/logback-classic-1.1.6.jar lib/logback-core-1.1.6.jar lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar logger-config/
我正在尝试从我的可执行 myapp.jar
文件外部加载 logback.xml
文件。
myapp.jar
有一个 META-INF/MANIFEST.MF
文件,大致如下:
Manifest-Version: 1.0
Class-Path: logger-config lib/lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar
Main-Class: com.mycompany.MyAppMain
并居住在
my-app/
lib/
jcl-over-slf4j-1.7.18.jar
slf4j-api-1.7.18.jar
logger-config/
logback.xml
myapp.jar
(还有很多其他 jar 依赖项,请删除)。
现在,如果我 运行 使用 java -jar myapp.jar
的应用程序,它可以正常启动,但 不会获取 logback.xml 文件 .
来自他们的文档:
If no such file is found, it checks for the file logback.xml in the classpath..
( http://logback.qos.ch/manual/configuration.html )
我知道我可以使用 logback.configurationFile
覆盖它,但是有没有办法将 XML 文件放到类路径中,以便 logback 自动加载它?它似乎只有在我将 logback.xml
打包到 myapp.jar
(将其放在 src/main/resources
目录中)时才有效,但是配置文件将传播到使用 myapp.jar
的其他 JAR作为依赖项。
也许你只是把它剪掉了,但是你的class路径没有指定logback-classic
依赖。
您必须确保 logback
在 class 路径定义中出现在 slf4j
之前。另外,请注意 logger-config
路径的尾部斜杠 - 如果没有它,logback 将找不到您的 logback.xml
(有关详细信息,请参阅 here)。
像这样的东西应该可以工作:
Class-Path: lib/logback-classic-1.1.6.jar lib/logback-core-1.1.6.jar lib/jcl-over-slf4j-1.7.18.jar lib/slf4j-api-1.7.18.jar logger-config/