我想将消息记录在文件中,而不是在控制台上。我正在使用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消息。
非常感谢任何帮助。
答案 0 :(得分:20)
Spring Boot允许您使用application.properties配置日志系统的一些基本方面,但有limits:
要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式。
换句话说,如果你想做一些不是通过属性特别支持的东西,你就不会去添加和编辑logback.xml
文件(假设你正在使用logback)。
所以,让我们完成你的要求:
根据docs:
默认情况下,Spring Boot只会登录到控制台,不会写入日志文件。如果要将日志文件另外(强调添加)写入控制台输出,则需要设置logging.file或logging.path属性(例如,在application.properties中)。
换句话说,不无法使用属性来登录控制台。
默认情况下,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的日志,没有做任何事情。
同样,仅使用属性无法完成此操作。 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