将logback.xml带到jar外部

问题描述 投票:1回答:4

我在我的Maven Java项目中使用slf4j的logback。目前,logback配置文件(logback.xml)位于src -> main -> resources文件夹中。它工作正常。 我的问题是,我需要让我的客户端能够根据自己的喜好配置日志记录。因为在构建它时,logback.xml应该在jar之外。但是由于xml位于src文件夹中,因此它位于jar内部,没有人可以在构建后更改它。 怎么做到这一点?

java logback
4个回答
3
投票

将默认配置文件的位置指定为系统属性您可以使用名为“logback.configurationFile”的系统属性指定默认配置文件的位置。此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。

java -jar myapp -Dlogback.configurationFile=/path/to/config.xml 

来自offcial docs


1
投票

logback.xml文件需要在类路径上,但不需要在任何特定的jar内。您希望如何执行此操作的详细信息取决于所使用的确切部署机制:启动此应用程序的任何内容如何设置类路径?无论采用何种机制,您都应该能够将其配置为包含logback.xml文件的任何位置,然后只是不要在src / main / resources中包含嵌入jar文件中。

根据您的目标的复杂程度,您可能会发现maven-assembly-plugin对于创建依赖关系的分布非常有用。


0
投票

可以在application.properties或application.yml中指定Logback配置文件位置。

application.yml

logging:
  config: logback-spring.xml

这允许您将jar和log-back.xml放在同一文件夹中。

请注意,项目文件夹中的logback-spring.xml文件不应包含在jar中。这可以在build.gradle或pom.xml上进行设置。

的build.gradle

bootJar {
  archiveName 'your-project.jar'
  exclude("*.xml")
}

0
投票

在Windows上使用Scala SBT(1.2.1):

批处理文件:

 @cd %~dp0

 @set JAVA_OPTS=-Dlogback.configurationFile=logback.xml

 @sbt clean run

为我工作(奇怪......)

© www.soinside.com 2019 - 2024. All rights reserved.