springboot中logback日志配置的详细说明

 更新时间:2025年05月15日 11:02:32   作者:zru_9602  
Logback 是一个高效、灵活的日志记录工具,支持多种日志格式和输出目标(如控制台、文件等),通过配置 logback-spring.xml 文件,可以自定义日志的输出方式和格式,下面给大家介绍springboot中logback日志配置的详细说明,感兴趣的朋友一起看看吧

在 Spring Boot 项目中,默认使用 Logback 作为日志框架。Logback 是一个高效、灵活的日志记录工具,支持多种日志格式和输出目标(如控制台、文件等)。通过配置 logback-spring.xml 文件,可以自定义日志的输出方式和格式。

以下是 Spring Boot 中 Logback 日志配置的详细说明:

1. 创建或修改 logback-spring.xml

在 Spring Boot 项目中,默认会使用 logback-spring.xml 文件来配置日志。如果该文件不存在,可以在 src/main/resources 目录下创建一个。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 配置控制台输出 -->
    <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>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 配置错误日志输出 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/error-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </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" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </logger>
    <!-- 配置错误日志 -->
    <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" level="ERROR">
        <appender-ref ref="ERROR_FILE"/>
    </logger>
</configuration>

2. 配置说明

2.1 日志格式

通过 <encoder> 标签可以配置日志的输出格式。常用占位符包括:

  • %d{yyyy-MM-dd HH:mm:ss.SSS}:日期和时间
  • [%thread]:线程名
  • %-5level:日志级别(右对齐,宽度 5)
  • %logger{36}:类名或包名(最多显示 36 个字符)
  • %msg:日志消息

2.2 控制台输出

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
配置控制台输出,日志会直接打印在终端。

2.3 文件输出

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
文件输出支持滚动策略,按天生成日志文件:

  • logs/app.log:当前日志文件
  • logs/app-yyyy-MM-dd.log:历史日志文件

滚动策略参数说明:

  • <fileNamePattern>:历史日志文件的命名规则
  • <maxHistory>:保留 30 天的历史日志

2.4 错误日志输出

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
专门记录错误级别的日志,通过 <filter> 标签设置只记录 ERROR 级别的日志。

2.5 根日志配置

<root level="INFO">
设置根日志的级别为 INFO,并将输出目标指向控制台和文件。

2.6 自定义包的日志级别

通过 <logger> 标签可以为特定包或类配置不同的日志级别:

  • name="com.example":指定包名
  • level="DEBUG":设置日志级别为 DEBUG
  • additivity="false":表示不继承父 logger 的配置

3. 配置生效条件

确保 logback-spring.xml 文件位于 src/main/resources 目录下。如果项目中没有该文件,Spring Boot 会使用默认日志配置。

4. 常见问题

4.1 日志文件不生成

  • 检查 <file> 和 <fileNamePattern> 的路径是否正确。
  • 确保程序有写入权限。

4.2 自定义包的日志不生效

  • 确保 name 属性与实际类名或包名完全一致。
  • 确保 additivity="false",避免继承父 logger 的配置。

4.3 日志级别无效

  • 确保 <logger> 标签中的 level 配置正确(如 DEBUGINFOERROR)。
  • 确保没有其他配置覆盖了该日志级别。

5. 总结

通过以上配置,可以灵活地定义 Spring Boot 应用的日志输出方式和格式。可以根据实际需求调整日志级别、输出目标和文件路径,从而更好地监控和调试应用。

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

相关文章

  • Myeclipse工程发布时端口占用问题的解决方法

    Myeclipse工程发布时端口占用问题的解决方法

    这篇文章主要介绍了Myeclipse工程发布时端口占用问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 深入剖析Java中Map.Entry的方法与实战应用

    深入剖析Java中Map.Entry的方法与实战应用

    在Java集合框架中,Map.Entry扮演着连接键值对的桥梁角色,作为Map接口的内部接口,它封装了键值对的本质,是高效处理映射数据的核心工具,下面我我们就来深入剖析Map.Entry的概念,方法及实战应用
    2025-06-06
  • SpringBoot集成RabbitMQ实现用户注册的示例代码

    SpringBoot集成RabbitMQ实现用户注册的示例代码

    这篇文章主要介绍了SpringBoot集成RabbitMQ实现用户注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 使用IntelliJ IDEA调式Stream流的方法步骤

    使用IntelliJ IDEA调式Stream流的方法步骤

    本文主要介绍了使用IntelliJ IDEA调式Stream流的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Spring中的@RestControllerAdvice注解使用方法解析

    Spring中的@RestControllerAdvice注解使用方法解析

    这篇文章主要介绍了Spring中的@RestControllerAdvice注解使用方法解析,@RestControllerAdvice是Controller的增强 常用于全局异常的捕获处理 和请求参数的增强,需要的朋友可以参考下
    2024-01-01
  • Freemaker Replace函数的正则表达式运用

    Freemaker Replace函数的正则表达式运用

    这篇文章主要介绍了Freemaker Replace函数的正则表达式运用 的相关资料,需要的朋友可以参考下
    2015-12-12
  • 使用Gradle打依赖包失败的问题及解决

    使用Gradle打依赖包失败的问题及解决

    这篇文章主要介绍了使用Gradle打依赖包失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • springboot启动过程中常用的回调示例详解

    springboot启动过程中常用的回调示例详解

    springboot提供非常丰富回调接口,利用这些接口可以做非常多的事情,本文通过实例代码给大家介绍springboot启动过程中常用的回调知识感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • maven父子工程多模块统一管理版本号的解决方法

    maven父子工程多模块统一管理版本号的解决方法

    maven父子工程多模块,每个模块还都可以独立存在,子模块往往通常希望和父工程保持一样的版本,如果每个工程单独定义版本号,后期变更打包也非常麻烦,,所以本文给大家介绍了maven父子工程多模块如何管理统一的版本号,需要的朋友可以参考下
    2024-09-09
  • 关于IDEA中spring-cloud-starter-alibaba-nacos-discovery 无法引入问题

    关于IDEA中spring-cloud-starter-alibaba-nacos-discovery 无法引入问题

    这篇文章主要介绍了关于IDEA中spring-cloud-starter-alibaba-nacos-discovery 无法引入问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论