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

时间:2015-05-28 07:05:25

标签: logging spring-boot

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

application.properties:

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

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

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

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:20)

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

  

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

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

所以,让我们完成你的要求:

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

      

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

    换句话说,无法使用属性来登录控制台。

    1. “我只在我的application.log文件中获取信息的日志消息,但我也想要错误以及调试消息。”
    2. 默认情况下,Spring Boot登录INFO级别,应该包含ERROR,你确定获取默认设置的ERROR日志吗?

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

      这不起作用:

      logging.level: DEBUG
      logging.level: ERROR
      

      这是如何根据docs

      配置自定义日志级别的示例
        

      logging.level.org.springframework.web:DEBUG
        logging.level.org.hibernate:错误

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

      logging.level.ROOT: DEBUG
      

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

      1. “我希望error.log文件中的错误消息和debug.log中的调试消息以及info.log中的信息消息。”
      2. 同样,仅使用属性无法完成此操作。 Spring Boot允许您配置一个logging.file属性,该属性将包含所有日志。

        有关可用日志记录属性的完整列表,请参阅here

答案 1 :(得分:1)

如果要禁用控制台日志记录并将输出仅写入文件,则需要一个自定义的logback-spring.xml,该文件将导入file-appender.xml而不是console-appender.xml。

它在Spring boot docs中有描述:

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在您的情况下,这不会起作用,因为您尝试将ROOT日志记录级别设置为多个级别。

logging.level: DEBUG
logging.level: ERROR

这些是不同的日志记录级别及其从最小值<<最大。

OFF<<致命<<错误<< WARN<< INFO<< DEBUG<< TRACE<< ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, your logs it won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

请通过此文档更加生动地自定义您的日志。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html