Spring启动不会加载logback-spring.xml

Tam*_*ane 16 java spring logback spring-boot

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

我特地到春季启动忽视的logback-spring.xml它表明,这可能是因为已经有一个spring.xml地方,但把断点org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)显示,日志文件是空的.

我在这里做错了吗?

Joh*_*anB 15

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

$ java -jar -Dlogback.configurationFile=/full_path/logback.xml app.jar
Run Code Online (Sandbox Code Playgroud)

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

  • 这是当你想以本机 logback 方式设置 logback.xml 时: logback.qos.ch/manual/configuration.html#configFileProperty 但如果你想以 spring boot 方式进行,你可以设置一个logging.config application.properties 或“java -jar”中的相对路径 (logging.config=relative/path/logback.xml) (2认同)

San*_*ose 9

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

-Dlogging.config=file:logback-spring.xml
Run Code Online (Sandbox Code Playgroud)

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

logging.config=file:logback-spring.xml
Run Code Online (Sandbox Code Playgroud)

它从资源文件夹中提取文件的原因,因为它是在 spring 中配置的。Spring 从类路径中通过以下名称获取 logback 文件。

logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Run Code Online (Sandbox Code Playgroud)

请查看spring-boot 自定义日志配置中的相关文档