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

Qas*_*sim 19 logging spring-boot

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

application.properties:

logging.level: DEBUG
logging.level: ERROR
logging.file: ${HOME}/application.log
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助非常感谢.

ci_*_*ci_ 22

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

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

换句话说,如果你想做一些不是通过属性特别支持的东西,你就不会去添加和编辑logback.xml文件(假设你正在使用logback).

那么,让我们来看看你的要求:

  1. "我想在不在控制台上的文件中记录消息."

根据文件:

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

换句话说,不能使用属性来记录到控制台.

  1. "我只在我的application.log文件中获取信息的日志消息,但我也想要错误以及调试消息."

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

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

这不起作用:

logging.level: DEBUG
logging.level: ERROR
Run Code Online (Sandbox Code Playgroud)

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

logging.level.org.springframework.web:DEBUG
logging.level.org.hibernate:ERROR

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

logging.level.ROOT: DEBUG
Run Code Online (Sandbox Code Playgroud)

请注意,在ROOT记录器上设置DEBUG日志记录将生成大量日志.我刚刚在这里进行了测试,并在启动时获得了大约13MB的日志,没有做任何事情.

  1. "我希望error.log文件中的错误消息和debug.log中的调试消息以及info.log中的信息消息."

同样,仅使用属性无法完成此操作.Spring Boot允许您只配置一个logging.file包含所有日志的属性.

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


Jas*_*son 0

不要使用这些属性,而是尝试在 application.properties 所在的文件夹中添加 logback.xml。按照您需要的方式配置 logback.xml 进行记录。