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 切换日志框架

相关推荐
GOTXX1 分钟前
BoostSiteSeeker项目实战
前端·c++·后端·mysql·搜索引擎·项目实战·boost
cwtlw3 分钟前
JavaRedis和数据库相关面试题
java·数据库·笔记·面试
11 分钟前
Golang标准库介绍
后端
悟空8614 分钟前
扩展你的RAG系统:自定义处理器与向量化方法
后端
Wo3Shi4七26 分钟前
MySQL底层原理(第一期)
数据库·后端·mysql
镜舟科技28 分钟前
迈向云原生:理想汽车 OLAP 引擎变革之路
大数据·数据库·云原生
fliter30 分钟前
性能比拼: Pingora vs Nginx (My NEW Favorite Proxy)
后端
LeoLiz31 分钟前
Spring security原理解析 + 实战
后端
The_one31 分钟前
Docker+certbot+Nginx实现自动续期https证书
后端
Determined_man32 分钟前
黑马点评,后端请求没问题,前端页面有时候请求超时,无响应数据?
java·后端