springboot项目日志配置的详细指南

 更新时间:2025年09月19日 11:12:09   作者:勇往直前plus  
本文介绍Spring Boot日志配置,重点讲解Logback与SLF4J的结合、日志级别设置及YAML/XML配置方式,涵盖控制台、文件输出、滚动策略等,提升开发与维护效率,感兴趣的朋友一起看看吧

前言

最近公司新开一个项目,需要从零搭建、开发,之前的工作都是在已完成的项目上进行维护 ,没有重点关注这些项目的日志是如何配置的,借此机会总结一下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.namelogging.file.path​​:定义日志输出到文件。
  • ​​logging.pattern.consolelogging.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日志配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis中的循环插入insert foreach问题

    MyBatis中的循环插入insert foreach问题

    这篇文章主要介绍了MyBatis中的循环插入insert foreach问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Idea集成ApiFox插件及使用小结

    Idea集成ApiFox插件及使用小结

    本文介绍了如何使用Apifox和IntelliJ IDEA插件来整理和生成接口文档,包括配置Apifox和IntelliJ IDEA插件、代码案例以及使用方法,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • springboot 在ftl页面上使用shiro标签的实例代码

    springboot 在ftl页面上使用shiro标签的实例代码

    这篇文章主要介绍了springboot 在ftl页面上使用shiro标签的实例代码,通过文字说明结合实例的形式给大家介绍的非常详细,需要的朋友参考下吧
    2018-05-05
  • mybatis查询语句的背后揭秘

    mybatis查询语句的背后揭秘

    这篇文章主要给大家介绍了关于mybatis查询语句的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • springboot注册bean的三种方法

    springboot注册bean的三种方法

    这篇文章主要介绍了springboot注册bean的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Java消息摘要算法MAC实现与应用完整示例

    Java消息摘要算法MAC实现与应用完整示例

    这篇文章主要介绍了Java消息摘要算法MAC实现与应用,结合完整实例形式分析了java消息摘要算法MAC的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Java使用HttpClient实现文件下载

    Java使用HttpClient实现文件下载

    这篇文章主要为大家详细介绍了Java使用HttpClient实现文件下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • MyBatis中if标签的基本使用

    MyBatis中if标签的基本使用

    本文介绍了MyBatis框架中的if标签的使用方法,包括动态生成SQL语句、处理不同类型的参数和if标签进行条件判断,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • springboot如何实现异步响应请求(前端请求超时的问题解决)

    springboot如何实现异步响应请求(前端请求超时的问题解决)

    这篇文章主要给大家介绍了关于springboot如何实现异步响应请求(前端请求超时的问题解决)的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用springboot具有一定的参考学习价值,需要的朋友可以参考下
    2023-01-01
  • 在Spring中自动装配Bean的属性

    在Spring中自动装配Bean的属性

    今天小编就为大家分享一篇关于在Spring中自动装配Bean的属性,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论