springboot项目日志配置的详细指南
作者:勇往直前plus
前言
最近公司新开一个项目,需要从零搭建、开发,之前的工作都是在已完成的项目上进行维护 ,没有重点关注这些项目的日志是如何配置的,借此机会总结一下boot项目如何合理配置日志,日志是项目遇到问题时首先要排查的内容,因此一个合理的日志配置必定会减少项目的维护难度,提升开发效率。
Logback+SLF4J简介
- SpringBoot默认使用Logback作为日志框架,它与SLF4J(Simple Logging Facade for Java)结合使用,提供了一个高效、灵活的日志解决方案,Logback相比其他日志框架具有性能高、配置灵活、内存占用小等优点,一般项目中使用默认的Logback日志框架就足够用了。
- 因此,实际在底层干活,输出日志的组件的是Logback,SLF4J只是提供了一些方便的API和日志使用方式,实际底层也是调用Logback输出日志。
- Logback 是通过spring-boot-starter-web或者其他依赖间接引入的,如果要使用其他日志框架,直接排除掉默认的 spring-boot-starter-logging,再引入其他依赖即可。
- 日志有日志级别,日志级别从低到高分为:TRACE < DEBUG < INFO < WARN < ERROR。设置某个级别后,只会输出该级别及更高级别的日志信息。级别越低,日志越详细,但输出也越多;级别越高,只记录越重要的问题
日志级别 | 应用场景 | 通俗理解 |
---|---|---|
TRACE | 记录程序执行的每一步细节,用于极端细致的调试 | 流水账 |
DEBUG | 开发阶段排查问题,记录变量值、方法执行等 | 调试笔记 |
INFO | 潜在的问题或不影响系统的异常(如配置未设置使用默认值) | 情况简报 |
WARN | 记录程序执行的每一步细节,用于极端细致的调试 | 注意一下 |
ERROR | 错误事件,影响部分功能但系统仍可运行(如数据库连接失败) | 出问题了 |
- 配置了日志级别后,当我们的代码调用日志、或者其他第三方框架内部调用日志输出时,Logback 会检查要输出的日志级别和当前已配置的日志级别,如果要输出的日志级别大于配置的日志级别,日志会输出,否则Logback 会忽略此条日志输出。
如何配置日志
SpringBoot 支持两种主要的 Logback 配置方式,这两种配置方式可以组合使用;一种是在yaml配置文件中配置,这种配置方式比较简单,快捷,适用于简单的日志配置需求,优先级较低,另一种是通过Logback专用logback-spring.xml配置文件,功能全面,支持高级功能如多环境、异步日志、复杂滚动策略等,优先级高
配置文件配置
这种方式适合快速设置和覆盖默认值。
# application.yml 示例 logging: level: root: INFO # 全局默认日志级别 com.example.demo: DEBUG # 设置特定包的日志级别 org.springframework: WARN file: name: ./logs/myapp.log # 指定具体的日志文件路径和名称(通常设置一个即可) # path: ./logs # 或者指定日志目录,Spring Boot 会使用默认文件名 spring.log pattern: console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 控制台输出格式 file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 文件输出格式
- logging.level:控制日志级别。root设置根记录器,其他为包或类名。
- logging.file.name或 logging.file.path:定义日志输出到文件。
- logging.pattern.console和 logging.pattern.file:定义日志输出格式。
使用Logback的XML配置文件
对于生产环境或需要精细控制的场景,logback-spring.xml是不二之选。将logback-spring.xml配置文件放在resources类路径下
核心组件
一个完整的配置通常包含以下部分:
<configuration>
根元素。<appender>
定义日志输出目的地(如控制台、文件)和行为,包含核心输出器ConsoleAppender
:输出到控制台。RollingFileAppender
:输出到文件并支持滚动策略(按时间、大小分割),防止单个文件过大<logger>
:为特定包或类配置日志级别和使用的 Appender<root>
:配置根记录器,所有日志记录器最终都继承于此
配置案例
下面是一个比较标准的 Logback 配置文件,它很好地设置了日志输出到控制台和文件,并配置了日志滚动策略。一般情况下如下配置就足够满足日志需求了
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 定义变量 --> <property name="LOG_PATH" value="logs" /> <property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_PATTERN}</pattern> </encoder> </appender> <!-- 文件输出与滚动策略 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/application.log</file> <encoder> <pattern>${CONSOLE_PATTERN}</pattern> </encoder> <!-- 当application.log达到10MB或日期变更时,会将其压缩归档并按模式重命名,然后创建新的application.log写入 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/archived/application-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <!-- 设置全局日志级别 --> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> <!-- 为特定包设置更详细的日志级别 --> <!-- <logger name="com.yourproject.service" level="DEBUG" />--> </configuration>
补充:Spring Boot日志文件配置指南
Spring Boot日志文件配置指南
在 Java Spring Boot 项目中配置日志输出到文件,可以通过以下步骤实现。Spring Boot 默认使用 Logback 作为日志框架,以下是两种常用配置方式:
方法一:通过application.properties/application.yml配置(推荐)
这是最简单的配置方式,适合大多数场景。
1. 在配置文件中添加日志设置
application.properties
配置示例:
# 设置日志输出路径和文件名(二选一) logging.file.name=logs/app.log # 完整路径(优先使用) # 或指定目录(自动生成 spring.log) logging.file.path=logs # 日志级别设置 logging.level.root=INFO logging.level.com.yourpackage=DEBUG # 日志滚动策略(防止日志文件过大) logging.logback.rollingpolicy.max-file-size=10MB # 单个文件最大 logging.logback.rollingpolicy.max-history=30 # 保留30天日志 logging.logback.rollingpolicy.total-size-cap=1GB # 归档总大小限制
application.yml
配置示例:
logging: file: name: logs/app.log level: root: INFO com.yourpackage: DEBUG logback: rollingpolicy: max-file-size: 10MB max-history: 30 total-size-cap: 1GB
2. 日志文件效果
- 日志输出到
logs/app.log
- 按大小滚动:
app.log
→app.2023-01-01.0.log.gz
(压缩归档) - 保留最近 30 天的日志
方法二:自定义logback-spring.xml配置(高级需求)
当需要复杂配置(如自定义格式、多环境配置、异步日志等)时使用。
1. 创建配置文件
在 src/main/resources
下新建 logback-spring.xml
:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 通用配置 --> <property name="LOG_PATH" value="logs" /> <property name="APP_NAME" value="your-app" /> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 文件输出(按天归档) --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/${APP_NAME}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>10MB</maxFileSize> <!-- 单个文件最大 --> <maxHistory>30</maxHistory> <!-- 保留天数 --> <totalSizeCap>1GB</totalSizeCap> <!-- 总大小限制 --> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <!-- 日志级别设置 --> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> <!-- 包级别日志 --> <logger name="com.yourpackage" level="DEBUG" /> </configuration>
2. 关键配置说明
RollingFileAppender
:日志文件输出核心组件SizeAndTimeBasedRollingPolicy
:按日期 + 大小滚动maxFileSize
:单个日志文件最大尺寸maxHistory
:保留历史日志天数fileNamePattern
:归档文件名格式(.gz
自动压缩)
到此这篇关于springboot项目日志配置指南的文章就介绍到这了,更多相关springboot日志配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!