Logback在SpringBoot中的详细配置教程

 更新时间:2025年05月26日 15:45:39   作者:悟能不能悟  
Spring Boot 默认会加载 classpath 下的 logback-spring.xml(推荐)或 logback.xml 作为 Logback 的配置文件,下面我们来看看具体的配置教程吧

1. Logback 配置文件

Spring Boot 默认会加载 classpath 下的 logback-spring.xml(推荐)或 logback.xml 作为 Logback 的配置文件。

​推荐使用 logback-spring.xml,因为 Spring Boot 提供了扩展支持(例如基于 Profile 的配置)。

配置文件位置

放在 src/main/resources/ 目录下。

2. 基础配置示例

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <!-- 定义变量 -->
    <property name="LOG_PATH" value="./logs" />
    <property name="LOG_FILE" value="myapp" />
 
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <!-- 滚动文件输出 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <!-- 日志级别和输出源配置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
 
    <!-- 指定包或类的日志级别 -->
    <logger name="com.example.demo" level="DEBUG" />
</configuration>

3. 关键配置项说明

Appender(日志输出器)

​ConsoleAppender: 输出日志到控制台。

​RollingFileAppender: 输出到文件并支持滚动(按时间、大小分割)。

  • SizeAndTimeBasedRollingPolicy: 根据时间和文件大小滚动。
  • maxFileSize: 单个文件最大大小。
  • maxHistory: 保留的历史日志文件数量。
  • totalSizeCap: 日志文件总大小限制。

Encoder(日志格式化)

<pattern> 定义日志格式,常用占位符:

  • %d: 日期时间
  • %thread: 线程名
  • %-5level: 日志级别(左对齐,宽度5)
  • %logger{36}: 日志输出者的名称(最长36字符)
  • %msg: 日志消息
  • %n: 换行符

Logger 和 Root Logger

  • <root>: 根日志配置,所有日志默认继承此配置。
  • <logger>: 针对特定包或类配置日志级别。

4. Spring Boot 特有功能

通过 application.properties 覆盖配置

在 application.properties 中可以覆盖部分日志配置:

# 设置根日志级别
logging.level.root=INFO
# 设置特定包日志级别
logging.level.com.example.demo=DEBUG
# 日志文件路径
logging.file.path=./logs
logging.file.name=./logs/app.log

按 Profile 配置日志

在 logback-spring.xml 中使用 <springProfile> 实现多环境配置:

<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
</springProfile>
 
<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</springProfile>

5. 高级配置

异步日志

使用 AsyncAppender 提升性能:

<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="FILE" />
    <!-- 队列大小,超出此值会丢弃 TRACE/DEBUG 日志 -->
    <queueSize>256</queueSize>
</appender>

彩色日志输出

在 ConsoleAppender 中启用颜色:

<encoder>
    <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level) %clr(${PID}){magenta} --- [%thread] %clr(%logger{36}){cyan} : %msg%n</pattern>
</encoder>

6. 常见问题解决

配置文件未生效

  • 确认文件名是 logback-spring.xml 且位于 src/main/resources。
  • 检查是否有其他日志框架(如 Log4j2)冲突,排除相关依赖。

日志文件未滚动

  • 检查 RollingFileAppender 配置,确保路径和文件名合法。
  • 确保 maxHistory 和 totalSizeCap 设置合理。

到此这篇关于Logback在SpringBoot中的详细配置教程的文章就介绍到这了,更多相关SpringBoot配置Logback内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis中TypeAliasRegistry的作用及使用方法

    Mybatis中TypeAliasRegistry的作用及使用方法

    Mybatis中的TypeAliasRegistry是一个类型别名注册表,它的作用是为Java类型建立别名,使得在Mybatis配置文件中可以使用别名来代替完整的Java类型名。使用TypeAliasRegistry可以简化Mybatis配置文件的编写,提高配置文件的可读性和可维护性
    2023-05-05
  • Java的垃圾回收机制实例分析

    Java的垃圾回收机制实例分析

    这篇文章主要介绍了Java的垃圾回收机制,结合实例形式分析了垃圾回收机制的原理及相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • Java序列化与serialVersionUID生成方法详解

    Java序列化与serialVersionUID生成方法详解

    在Java开发中,对象的序列化与反序列化是一个关键特性,广泛应用于数据存储、网络传输等场景,而serialVersionUID作为序列化机制中的一个重要标识,用于确保类版本的一致性,本文将详细讲解如何生成serialVersionUID,并结合具体代码实例,帮助读者更好地理解和应用这一概念
    2025-06-06
  • Springboot 全局时间格式化操作

    Springboot 全局时间格式化操作

    这篇文章主要介绍了Springboot 全局时间格式化操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Spring Security 图片验证码功能的实例代码

    Spring Security 图片验证码功能的实例代码

    spring security是一系列的过滤器链,所以在这里验证码也声明为过滤器,加在过滤器链的 登录过滤器之前,然后自定义一个异常类,来响应验证码的错误信息.这篇文章主要介绍了Spring Security 图片验证码,需要的朋友可以参考下
    2018-03-03
  • 使用IDEA配置Maven搭建开发框架ssm教程

    使用IDEA配置Maven搭建开发框架ssm教程

    这篇文章主要为大家详细介绍了使用IDEA配置Maven搭建开发框架ssm教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • cmd中javac命令无法运行(java指令能运行)解决步骤

    cmd中javac命令无法运行(java指令能运行)解决步骤

    这篇文章主要介绍了在安装JDK后,执行javac命令没有返回值的问题,可能是由于命令提示符窗口缓存问题、系统路径优先级问题、文件权限问题或命令行输入问题,文中通过代码将解决的步骤介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • 解决SpringBoot项目中log4j与logback的Jar包冲突问题

    解决SpringBoot项目中log4j与logback的Jar包冲突问题

    这篇文章主要给大家介绍了解决SpringBoot项目中log4j与logback的Jar包冲突问题,文中有详细的解决方法和冲突的原因,有遇到相同问题的朋友可以参考阅读本文
    2023-10-10
  • MyBatis框架简介及入门案例详解

    MyBatis框架简介及入门案例详解

    MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码,本文将作为最终篇为大家介绍MyBatis的使用
    2022-08-08
  • Java枚举类与注解,新手一篇搞定它

    Java枚举类与注解,新手一篇搞定它

    枚举类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。由于Java 不支持多继承,所以枚举对象不能再继承其他类(可以实现接口)
    2021-06-06

最新评论