弹簧启动不加载日志回弹簧.xml

2022-09-01 15:48:50

我有一个示例Spring Boot应用程序,它使用Logback进行日志记录。所以我在jar旁边配置日志记录,但是除非我用,例如:..来指定它,否则它不起作用。logback-spring.xmllogging.configlogging.config=logback-spring.xml

我已经研究了Spring Boot忽略logback-spring.xml它表明它可能是因为已经有一个地方,但是将断点放在上面显示logFile是空的。spring.xmlorg.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)

我在这里做错了什么吗?


答案 1

默认情况下,Spring 不会在 jar 文件之外查找资源。如果要使用外部 logback 配置文件,则必须在启动 jar 时传递它的位置:

$ java -jar -Dlogback.configurationFile=/full_path/logback.xml app.jar

请不要将 logback.xml包含在最终的 Jar 文件中,这将导致类路径中有多个 logback.xml 文件。


答案 2

根据问题的描述,您使用的是日志配置的外部化版本。文件保存在 jar 之外。因此,您必须将路径作为运行时参数提及,如下所示:

-Dlogging.config=file:logback-spring.xml

或者在 application.properties 中提及相同的属性,如下所示:

logging.config=file:logback-spring.xml

它从资源文件夹中获取文件的原因,因为它是以这种方式配置的。Spring从classpath中按以下名称拾取日志文件。

logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

请查看弹簧引导自定义日志配置中的相关文档


推荐