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

相关推荐
愿你天黑有灯下雨有伞31 分钟前
告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
spring boot·百度·ocr
武子康5 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑5 小时前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
-SGlow-6 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
@昵称不存在6 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen6 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之7 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
明月5667 小时前
Oracle 误删数据恢复
数据库·oracle
超浪的晨8 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack8 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉