日志
Spring Boot 使用Commons Logging进行所有内部日志记录,但保持底层日志实现打开。为Java Util Logging、Log4J2和Logback提供了默认配置。在每种情况下,记录器都预先配置为使用控制台输出,并且还提供可选的文件输出。
默认情况下,如果您使用“Starters”,则使用 Logback 进行日志记录。还包括适当的 Logback 路由,以确保使用 Java Util Logging、Commons Logging、Log4J 或 SLF4J 的依赖库都能正常工作。
日志格式
输出以下项目:
- 日期和时间:毫秒精度,易于排序。
- 日志级别:
ERROR
,WARN
,INFO
,DEBUG
,或TRACE
。 - 进程标识。
---
用于区分实际日志消息开始的分隔符。- 线程名称:括在方括号中(可能会被截断以用于控制台输出)。
- 记录器名称:这通常是源类名称(通常缩写)。
- 日志消息。
控制台输出
默认日志配置在写入时将消息回显到控制台。默认情况下,会记录ERROR
-level、WARN
-level 和INFO
-level 消息。--debug
您还可以通过使用标志启动应用程序来启用“调试”模式。
$ java -jar myapp.jar --debug
如果您的终端支持 ANSI,则使用颜色输出来提高可读性。您可以设置spring.output.ansi.enabled
为支持的值以覆盖自动检测。
使用%clr
转换字配置颜色编码。在最简单的形式中,转换器根据日志级别为输出着色,如以下示例所示:
%clr(%5p)
文件输出
默认情况下,Spring Boot 仅记录到控制台,不写入日志文件。如果您想在控制台输出之外写入日志文件,您需要设置一个logging.file.name
orlogging.file.path
属性。
日志文件在达到 10 MB 时会旋转,并且与控制台输出一样,默认情况下会记录ERROR
-level、WARN
-level 和INFO
-level 消息。
文件轮换
application.properties
如果您使用的是 Logback,则可以使用您的application.yaml
文件微调日志轮换设置。对于所有其他日志记录系统,您需要自己直接配置轮换设置(例如,如果您使用 Log4J2,那么您可以添加一个log4j2.xml
或log4j2-spring.xml
文件)。
支持以下轮换策略属性:
名称 | 描述 |
---|---|
logging.logback.rollingpolicy.file-name-pattern | 用于创建日志存档的文件名模式。 |
logging.logback.rollingpolicy.clean-history-on-start | 如果应在应用程序启动时进行日志归档清理。 |
logging.logback.rollingpolicy.max-file-size | 归档前日志文件的最大大小。 |
logging.logback.rollingpolicy.total-size-cap | 在被删除之前可以占用的最大大小的日志档案。 |
logging.logback.rollingpolicy.max-history | 要保留的存档日志文件的最大数量(默认为 7)。 |
日志级别
所有受支持的日志记录系统都可以通过使用 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF 之一在 Spring 中设置记录器级别(例如Environment
in application.properties
) 。记录器可以使用.logging.level.<logger-name>=<level>``level``root``logging.level.root
以下示例显示了潜在的日志记录设置application.properties
:
logging:
level:
root: "warn"
org.springframework.web: "debug"
org.hibernate: "error"
也可以使用环境变量设置日志记录级别。
自定义日志配置
可以通过在类路径中包含适当的库来激活各种日志系统,并且可以通过在类路径的根目录中或在以下 SpringEnvironment
属性指定的位置中提供合适的配置文件来进一步定制logging.config
:
org.springframework.boot.logging.LoggingSystem
您可以使用system 属性强制 Spring Boot 使用特定的日志记录系统。该值应该是实现的完全限定类名LoggingSystem
。您还可以使用none
.
根据您的日志记录系统,将加载以下文件:
日志系统 | 定制 |
---|---|
logback | logback-spring.xml , logback-spring.groovy , logback.xml , 或logback.groovy |
log4j2 | log4j2-spring.xml 或者 log4j2.xml |
JDK(Java util logging) | logging.properties |
为了帮助进行自定义,一些其他属性从 Spring 转移Environment
到 System 属性,如下表所述:
spring环境 | 系统属性 | 评论 |
---|---|---|
logging.exception-conversion-word | LOG_EXCEPTION_CONVERSION_WORD | 记录异常时使用的转换字。 |
logging.file.name | LOG_FILE | 如果已定义,它将在默认日志配置中使用。 |
logging.file.path | LOG_PATH | 如果已定义,它将在默认日志配置中使用。 |
logging.pattern.console | CONSOLE_LOG_PATTERN | 在控制台上使用的日志模式 (stdout)。 |
logging.pattern.dateformat | LOG_DATEFORMAT_PATTERN | 日志日期格式的附加模式。 |
logging.charset.console | CONSOLE_LOG_CHARSET | 用于控制台日志记录的字符集。 |
logging.pattern.file | FILE_LOG_PATTERN | 在文件中使用的日志模式(如果LOG_FILE 启用)。 |
logging.charset.file | FILE_LOG_CHARSET | 用于文件日志记录的字符集(如果LOG_FILE 启用)。 |
logging.pattern.level | LOG_LEVEL_PATTERN | 呈现日志级别时使用的格式(默认%5p )。 |
PID | PID | 当前进程 ID(如果可能且尚未定义为 OS 环境变量时发现)。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY