为什么 Spring Boot 3 日志文件可能无法创建?

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

在最近从 Boot 2.5 更新到 3.2.4 的 Spring Boot 应用程序中。我们总是使用配置属性

logging.file.name
来指定日志文件的创建位置,从来没有遇到过任何问题。然而,自从更新到 Boot 3 以来,我们不再创建日志文件。

我们使用 YAML 进行外部化配置,我已经尝试了以下所有方法,但没有成功:

logging:
  file:
    name: logs/my-app-log.txt
logging:
  file:
   path: logs

-Dlogging.file.name=appLog.txt
传递启动应用程序的命令行。

无论我尝试什么,我都不会创建日志文件,只有控制台日志记录。

我们没有任何自定义 logback-spring.xml 或其他日志记录 impl 配置文件。

为了确定,我仔细检查了文档以确认这些属性(仍然)是正确的名称 - 它们是。我还确认文件系统权限没有更改,并且运行应用程序的用户帐户可以写入文件夹。

还有哪些其他原因导致未创建日志文件?

spring-boot
1个回答
0
投票

通过将系统属性

logback.debug
设置为
true
(我在启动应用程序的命令行上传递了
-Dlogback.debug=true
),我可以看到 Logback 在类路径上找到了
logback.xml
配置文件。它嵌入在我的依赖项中,这对于发布库来说是一个很大的禁忌。

那个

logback.xml
文件不包含文件附加程序,这就是为什么我的应用程序的日志文件没有被创建 - 类路径上
logback.xml
的存在是 Logback 的配置发现机制 的一部分,并导致 Spring Boot 自己的默认设置要绕过的配置。

一种解决方法是在应用程序的

logback.xml
文件夹中创建我自己的
src/main/resources
文件(如果使用 Gradle 或 Maven)并在那里完全配置 Logback。

对我来说幸运的是,该依赖项中

logback.xml
的存在已被报告为错误并在新版本中修复;将我的依赖项更新到新版本解决了该问题。

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