我在我的Maven Java项目中使用slf4j的logback。目前,logback配置文件(logback.xml)位于src -> main -> resources
文件夹中。它工作正常。
我的问题是,我需要让我的客户端能够根据自己的喜好配置日志记录。因为在构建它时,logback.xml应该在jar之外。但是由于xml位于src文件夹中,因此它位于jar内部,没有人可以在构建后更改它。
怎么做到这一点?
将默认配置文件的位置指定为系统属性您可以使用名为“logback.configurationFile”的系统属性指定默认配置文件的位置。此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。
java -jar myapp -Dlogback.configurationFile=/path/to/config.xml
logback.xml文件需要在类路径上,但不需要在任何特定的jar内。您希望如何执行此操作的详细信息取决于所使用的确切部署机制:启动此应用程序的任何内容如何设置类路径?无论采用何种机制,您都应该能够将其配置为包含logback.xml文件的任何位置,然后只是不要在src / main / resources中包含嵌入jar文件中。
根据您的目标的复杂程度,您可能会发现maven-assembly-plugin对于创建依赖关系的分布非常有用。
可以在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")
}
在Windows上使用Scala SBT(1.2.1):
批处理文件:
@cd %~dp0
@set JAVA_OPTS=-Dlogback.configurationFile=logback.xml
@sbt clean run
为我工作(奇怪......)