如何使用 Spring Boot 将日志消息写入文件?

新手上路,请多包涵

我想将消息记录在文件中,而不是在控制台上。我正在使用 Spring Boot,我的配置如下:

应用程序属性:

 logging.level: DEBUG
logging.level: ERROR
logging.file: ${HOME}/application.log

我只在我的 application.log 文件中收到 INFO 的日志消息,但我也想要 ERROR 和 DEBUG 消息。

我的要求是我想要 error.log 文件中的 ERROR 消息和 — 中的 DEBUG 消息和 — info.log debug.log 中的 INFO 消息。

非常感谢任何帮助。

原文由 Qasim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 591
1 个回答

Spring Boot 允许您使用 application.properties 配置日志系统的一些基本方面,但有一些 限制

要配置日志系统的更细粒度设置,您需要使用相关 LoggingSystem 支持的本机配置格式。

换句话说,如果你想做一些不是通过属性特别支持的事情,你将无法添加和编辑 logback.xml 文件(假设你使用的是 logback)。

所以,让我们来看看你的要求:

  1. “我想在不在控制台的文件中记录消息。”

根据 文档

默认情况下,Spring Boot 只会登录到控制台,不会写入日志文件。如果您想在控制台输出 中添加 日志文件(强调添加),您需要设置 logging.file 或 logging.path 属性(例如在您的 application.properties 中)。

换句话说,不能使用属性来完成 登录到控制台。

  1. “我只在我的 application.log 文件中获取信息的日志消息,但我也想要错误和调试消息。”

默认情况下,INFO 级别的 Spring Boot 日志应该包括 ERROR,您确定您 没有 使用默认设置获取 ERROR 日志吗?

此外,您只指定要记录的最高级别,而不是每个级别,并且您必须指定要设置级别的记录器。

这不起作用:

 logging.level: DEBUG
logging.level: ERROR

这是一个如何根据 文档 配置自定义日志级别的示例:

logging.level.org.springframework.web:调试

logging.level.org.hibernate:错误

您还可以使用 logging.level.* 属性来设置根记录器的级别,如下所示:

 logging.level.ROOT: DEBUG

请注意,在 ROOT logger 上设置 DEBUG 日志记录会产生大量日志。我刚刚在这里对其进行了测试,仅在启动时就获得了大约 13MB 的日志,而没有做任何事情。

  1. “我想要 error.log 文件中的错误消息和 debug.log 中的调试消息以及 info.log 中的信息消息。”

同样,这不能单独使用属性来完成。 Spring Boot 允许您只配置一个 logging.file 属性,该属性将包含所有日志。

有关可用日志记录属性和示例值的完整列表,请参见 此处

原文由 ci_ 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进