首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【SpringBoot】日志级别 && 日志配置 && 配合lombok进行日志输出

【SpringBoot】日志级别 && 日志配置 && 配合lombok进行日志输出

原创
作者头像
lirendada
发布2026-06-14 13:27:23
发布2026-06-14 13:27:23
20
举报
文章被收录于专栏:JavaJava

日志级别的分类

日志的级别从高到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE

  • FATAL:致命信息,表示需要立即被处理的系统级错误。
  • ERROR:错误信息,级别较高的错误日志信息,但仍然不影响系统的继续运行。
  • WARN:警告信息,不影响使用,但需要注意的问题。
  • INFO:普通信息,用于记录应用程序正常运行时的一些信息,例如系统启动完成、请求处理完成等。
  • DEBUG:调试信息,需要调试时候的关键信息打印。
  • TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则请使用DEBUG级别替代)。

日志配置

一、配置日志级别

日志级别配置只需要在配置文件中设置 logging.level 配置项即可,如下所示:

Properties配置:

代码语言:javascript
复制
logging.level.root=debug

yml配置:

代码语言:javascript
复制
logging:
  level:
    root: debug

二、日志持久化

日志持久化有两种方式:

  1. 配置日志文件名
  2. 配置日志的存储目录

若两种方式同时存在,则以配置日志文件名的方式为准!

配置日志文件名

Properties 配置:

代码语言:javascript
复制
logging.file.name=logger/springboot.log

yml 配置:

代码语言:javascript
复制
# 设置日志文件的文件名(可以跟绝对路径或者相对路径。)
logging:
  file:
    name: logger/springboot.log

配置日志的存储目录

Properties 配置:

代码语言:javascript
复制
logging.file.path=D:/temp

yml 配置:

代码语言:javascript
复制
# 设置日志文件的目录
logging:
  file:
    path: D:/temp

这种方式只能设置日志的路径,文件名固定为 spring.log

使用 logback-spring.xml 配置日志

推荐结构(工业级):

代码语言:javascript
复制
resources/
├── application.yml
└── logback-spring.xml

在抽奖系统项目中使用到了用 logback-spring.xml 文件来配置日志,如下所示,具体内容忘记了可以查阅 gpt:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="false" debug="false">

    <!-- springProfile作用:进行环境隔离,区分开发环境和生产环境 -->
    <springProfile name="dev">

        <!-- appender是输出器,这里输出到控制台,核心是这个class,name只是下面要用于绑定日志级别的标识符 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <!-- encoder作用:日志格式 -->
            <encoder>
                <pattern>
                    %d{HH:mm:ss.SSS} [%yellow(%thread)] %highlight(%-5level) %cyan(%logger{36}) - [%method,%line]
                    - %msg%n
                </pattern>
            </encoder>
        </appender>

        <!-- root日志级别设置为info,所有日志从 INFO 级别开始往上打印,并且输出到 console -->
        <root level="info">
            <appender-ref ref="console" />
        </root>
    </springProfile>

    <springProfile name="prod,test">
        <!-- 定义变量 -->
        <property name="logback.logErrorDir" value="/var/logs/${spring.application.name}/error"/>
        <property name="logback.logInfoDir" value="/var/logs/${spring.application.name}/info"/>

        <!-- 给整个 Logback 日志上下文起“名字”-->
        <contextName>${spring.application.name}</contextName>

        <!-- ERROR级别的日志配置如下 -->
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--
                日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
                如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
                的日志改名为今天的日期。即,<File> 的日志都是当天的。
            -->
            <File>${logback.logErrorDir}/error.log</File>

            <!-- 日志level过滤器,保证error.xxx.log中只记录ERROR级别的日志-->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <!--滚动策略(按天滚动),按照时间滚动 TimeBasedRollingPolicy-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
                <FileNamePattern>${logback.logErrorDir}/error.%d{yyyy-MM-dd}.log</FileNamePattern>

                <!--只保留最近10天的日志-->
                <maxHistory>10</maxHistory>
            </rollingPolicy>

            <!--日志输出编码格式化-->
            <encoder>
                <charset>UTF-8</charset>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>

        <!--INFO级别的日志配置如下-->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
                如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
                的日志改名为今天的日期。即,<File> 的日志都是当天的。
            -->
            <File>${logback.logInfoDir}/info.log</File>

            <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
                <FileNamePattern>${logback.logInfoDir}/info.%d{yyyy-MM-dd}.log</FileNamePattern>

                <!--只保留最近10天的日志-->
                <maxHistory>10</maxHistory>
            </rollingPolicy>

            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <!--日志输出编码格式化-->
            <encoder>
                <charset>UTF-8</charset>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>

        <!-- 所有日志 ≥INFO 的都会触发 -->
        <root level="info">
            <appender-ref ref="fileErrorLog" />
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
</configuration>

💥注意事项

  1. 每个微服务一份 logback-spring.xml,各自输出各自的日志文件
  2. 用了 logback-spring.xml,日志相关配置应以它为 "唯一真源(SSOT)"application.yml 里不再单独配置日志文件名、路径、滚动策略等,不过 application.yml 可以只负责日志级别

配合 lombok 进行日志输出

添加 lombok 依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

在想要使用日志的类中添加注解即可:

代码语言:javascript
复制
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class LogController {
    public void log(){
        log.info("--------------要输出日志的内容----------------");
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日志级别的分类
  • 日志配置
    • 一、配置日志级别
    • 二、日志持久化
      • 配置日志文件名
      • 配置日志的存储目录
    • 使用 logback-spring.xml 配置日志
      • 💥注意事项
  • 配合 lombok 进行日志输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档