SpringBoot (二) 日志系统

目录

[一 基础概念](#一 基础概念)

[1 基础版](#1 基础版)

[2 改进版](#2 改进版)

[二 日志级别](#二 日志级别)

常见日志级别(从低到高详细度/从高到低严重性)

[三 基础使用](#三 基础使用)

[1 级别调节](#1 级别调节)

[2 日志的文件输出](#2 日志的文件输出)

[3 文件归档与滚动切割](#3 文件归档与滚动切割)

[4 也可以自动创建一个配置文件](#4 也可以自动创建一个配置文件)

[5 切换日志框架](#5 切换日志框架)


一 基础概念

日志框架对比总结

框架类型 代表 优势 劣势
日志门面 SLF4J 高灵活性,参数化日志支持 需绑定具体实现
日志实现 Logback 高性能,原生支持SLF4J 功能扩展性弱于Log4j2
日志实现 Log4j2 异步日志、无垃圾模式,性能最优 配置复杂度较高
  1. SLF4J + Logback

    • Spring Boot默认组合,性能优异且配置灵活。
  2. SLF4J + Log4j2

    • 高性能场景的首选,支持异步日志和复杂过滤策略。

**日志:**日志是系统和应用程序在运行过程中记录的关键信息,涵盖事件、状态变更、错误、用户操作等内容。

1 基础版

java 复制代码
package org.example.springmvc;

import org.junit.jupiter.api.Test;
import org.junit.platform.commons.logging.Logger;
import org.junit.platform.commons.logging.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class LogTest {

    @Test
    public void testLog() {
        //格式 时间 日志级别  日志信息
        // 获取一个日志记录器
        Logger logger = LoggerFactory.getLogger(LogTest.class);
        //开始记录日志
        logger.trace(() -> "追踪日志...");
        logger.debug(() -> "调试日志...");
        logger.info(() -> "信息日志...");
        logger.warn(() -> "警告日志...");
        logger.error(() -> "错误日志...");
    }
}

2 改进版

java 复制代码
package org.example.springmvc;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@Slf4j
@SpringBootTest
public class LogTest {

    @Test
    public void testLog() {
        //开始记录日志
        log.trace("追踪日志...");
        log.debug("调试日志...");
        log.info("信息日志...");
        log.warn("警告日志...");
        log.error("错误日志...");
    }
}

二 日志级别

常见级别:all - trace - debug - info - warn - error -fatal - off

级别越来越高,信息越来越粗糙。日志有一个默认级别(INFO),只会打印这个级别之上的所有。

常见日志级别(从低到高详细度/从高到低严重性)

级别 典型使用场景 示例日志内容
TRACE 最详细的调试信息,用于追踪程序每一步执行(如循环内部状态、低层逻辑)。通常仅在开发阶段启用。 进入方法 calculatePrice,参数: itemId=1001, quantity=2
DEBUG 详细的运行时信息,用于调试问题(如变量值、分支逻辑)。开发环境常用,生产环境按需临时开启。 用户ID 12345 的购物车中有 3 件商品,总金额 $299.99
INFO 常规的系统运行状态,记录关键业务流程节点(如服务启动、配置加载、用户操作)。生产环境默认级别。 订单 67890 支付成功,金额 $150.00
WARN 潜在问题警告,不影响系统继续运行但需关注(如低内存、重试操作、降级策略触发)。 数据库连接池使用率超过80%,当前连接数: 48/50
ERROR 运行时错误,导致当前操作失败但系统仍可运行(如外部API调用失败、文件未找到、业务逻辑异常)。 支付网关请求失败: 连接超时 (订单ID: 67890)
FATAL 致命错误,导致系统崩溃或无法恢复(如内存溢出、关键资源不可用)。需立即人工干预。 JVM 内存溢出: java.lang.OutOfMemoryError

三 基础使用

1 级别调节

调级别:(所有)

XML 复制代码
logging.level.root=debug

调级别:(指定)

XML 复制代码
logging.level.org.example.springmvc=debug

日志分组调级别:(指定组别)

XML 复制代码
logging.group.biz=org.example.springmvc.dao,org.example.springmvc.service
logging.level.biz=debug

2 日志的文件输出

指定文件名在当前项目下生成(指定的是名称)

XML 复制代码
logging.file.name=boot.log

指定路径在路径下创建(指定的是路径,名称会有默认名称:spring.log)

XML 复制代码
logging.file.path=D://myLog

两个都指定:以文件名为准

3 文件归档与滚动切割

  • 归档:每天的日志单独到一个文档中。
  • 切割:每个文件10MB,超过小切割成另外一个文件。

0B 不限制大小

4 也可以自动创建一个配置文件

如果你想快速修改日志的配置,就在SpringBoot的配置文件中修改,如果你有原生日志的全量配置,直接使用原生框架的这些配置。

5 切换日志框架

相关推荐
〆、风神6 分钟前
Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
spring boot·分布式·后端
Asthenia041210 分钟前
Select、Poll、Epoll 详细分析与面试深度剖析/C代码详解
后端
烛阴13 分钟前
Node.js中必备的中间件大全:提升性能、安全与开发效率的秘密武器
javascript·后端·express
南雨北斗17 分钟前
WMware虚拟机下载方法(2025年4月)
后端
朝阳58133 分钟前
Rust项目GPG签名配置指南
开发语言·后端·rust
微网兔子33 分钟前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏
朝阳58134 分钟前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
橘猫云计算机设计1 小时前
springboot基于hadoop的酷狗音乐爬虫大数据分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·hadoop·spring boot·爬虫·python·数据分析·毕业设计
小希爸爸1 小时前
2、中医基础入门和养生
前端·后端
卓怡学长1 小时前
w304基于HTML5的民谣网站的设计与实现
java·前端·数据库·spring boot·spring·html5