将logback.xml带到罐子外面

时间:2018-06-20 11:44:12

标签: java logback

我在Maven Java项目中将slf4j与logback一起使用。当前,logback配置文件(logback.xml)位于src -> main -> resources文件夹中。而且工作正常。
我的问题是,我需要让我的客户端能够按自己的喜好配置日志记录。因为该logback.xml在我构建它时应该在jar之外。但是由于xml位于src文件夹内,因此它位于jar内,并且在构建后没有人可以更改它。
如何实现呢?

4 个答案:

答案 0 :(得分:5)

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

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

来自offcial docs

答案 1 :(得分:1)

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

根据要处理的内容的复杂程度,您可能会发现maven-assembly-plugin对于创建依赖项分布很有用。

答案 2 :(得分:0)

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

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")
}

答案 3 :(得分:0)

在Windows上使用Scala SBT(1.2.1):

批处理文件:

 @cd %~dp0

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

 @sbt clean run

为我工作(奇怪...)