Spring Boot ⽇志

news/2024/10/6 17:39:07 标签: spring boot, 后端, java

目录

1.⽇志使⽤

2.⽇志级别  

3.⽇志配置

3.1配置⽇志级别

 3.2⽇志持久化

3.3配置⽇志⽂件分割 

4.更简单的⽇志输出 


 

1.⽇志使⽤

在使用之前我们先来了解一下为什么要使用?

⽇志的⽤途
1.系统监控
我们可以通过⽇志记录这个系统的运⾏状态,对数据进⾏分析, 设置不同的规则, 超过阈值时进⾏报警。
2.数据采集
数据采集是⼀个⽐较⼤的范围, 采集的数据可以作⽤在很多⽅⾯, ⽐如数据统计, 推荐排序等。
3.⽇志审计
通过系统⽇志分析,可以判断⼀些⾮法攻击, ⾮法调⽤,以及系统处理过程中的安全隐患

 ⽇志使⽤

SpringBoot 内置了⽇志框架 Slf4j , 我们可以直接在程序中调⽤ Slf4j 来输出⽇志 

1.在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory 

2.⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志 

代码1-1:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Logger")
@RestController
public class LoggerController {
    private  static Logger logger= LoggerFactory.getLogger(LoggerController.class);
    @RequestMapping("/print")
    public void print(){
        logger.info("=======打印日志======");
    }
}

 结果:

 注意:Logger 对象是属于 org.slf4j 包下的, 不要导⼊错包.

从上图可以看到,⽇志输出内容元素具体如下: 

1.时间⽇期:精确到毫秒

2.⽇志级别

3.进程ID

4.线程名

5.Logger名(通常使⽤源代码的类名)

6.⽇志内容 


 

2.⽇志级别  

⽇志级别代表着⽇志信息对应问题的严重性, 为了更快的筛选符合⽬标的⽇志信息。

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

1.FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误

2.ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏

3. WARN: 警告信息, 不影响使⽤, 但需要注意的问题

4.INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息,

5.DEBUG: 调试信息, 需要调试时候的关键信息打印.

6.TRACE: 追踪信息

注意:⽇志级别通常和测试⼈员的Bug级别没有关系 

⽇志级别的使⽤

 ⽇志级别是开发⼈员⾃⼰设置的. 开发⼈员根据⾃⼰的理解来判断该信息的重要程度

代码2-1: 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Logger")
@RestController
public class LoggerController {
    private  static Logger logger= LoggerFactory.getLogger(LoggerController.class);

    @RequestMapping("/level")
    public void loggerLevel(){
        logger.error("=======error======");
        logger.warn("======warn======");
        logger.info("======info======");
        logger.debug("======debug======");
        logger.trace("======trace======");
    }
}

结果:

结果发现, 只打印了info, warn和error级别的⽇志
这与⽇志级别的配置有关, ⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就 是info, warn和error.

 


3.⽇志配置

3.1配置⽇志级别

yml配置
logging:
 level:
  root: debug    

 整个程序(root)⽇志的输出级别设置为debug级别 

 (也可以修改root,为具体路径)

重新运⾏上述代码2-1, 观察结果 

 

 3.2⽇志持久化

以上的⽇志都是输出在控制台上的, 然⽽在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追 溯问题. 把⽇志保存下来就叫持久化. ⽇志持久化有两种⽅式:
1. 配置⽇志⽂件名
2. 配置⽇志的存储⽬录

1. 配置⽇志⽂件名

logging:
 file:
 name: logger/springboot.log

运行后:

 

 2.配置⽇志⽂件的保存路径

这种⽅式只能设置⽇志的路径, ⽂件名为固定的spring.log
logging:
 file:
  path: D:/temp

运行后:

注意:

logging.file.name logging.file.path 两个都配置的情况下, 只⽣效其⼀, 以 logging.file.name 为准

3.3配置⽇志⽂件分割 

如果我们的⽇志都放在⼀个⽂件中, 随着项⽬的运⾏, ⽇志⽂件会越来越⼤, 需要对⽇志⽂件进⾏分割
⽇志框架也帮我们考虑到了这⼀点, 所以如果不进⾏配置, 就⾛⾃动配置
默认⽇志⽂件超过10M就进⾏分割
logging:
 logback:
 rollingpolicy:
 max-file-size: 1KB
 file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
1.⽇志⽂件超过1KB就分割
2.分割后的⽇志⽂件名为: ⽇志名.⽇期.索引

 样图:


4.更简单的⽇志输出 

lombok提供的 @Slf4j 会帮我们提供⼀个⽇志对象 log, 我们直接使⽤就可以
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequestMapping("/Logger2")
@RestController
public class LoggerApplication2 {

    @RequestMapping("/print2")
    public void log2(){
        log.info("--------------要输出⽇志的内容----------------");
    }
}

以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 


http://www.niftyadmin.cn/n/5691923.html

相关文章

sql乐观锁的实现方式

在数据库管理中,乐观锁(Optimistic Locking)是一种用于处理并发更新的机制。它假设在大多数情况下,并发更新的冲突不会频繁发生,因此在更新数据时不会立即锁定数据行,而是在更新时进行检查。如果数据自读取…

maven指定模块快速打包idea插件Quick Maven Package

问题背景描述 在实际开发项目中,我们的maven项目结构可能不是单一maven项目结构,项目一般会用parent方式将各个项目进行规范; 随着组件的数量增加,就会引入一个问题:我们只想打包某一个修改后的组件A时就变得很不方便…

文件共享软件推荐,哪些工具最实用?

预计到2025年文档共享市场将增长至近100亿美金。文件共享软件助力跨区域协作,推荐ZohoWorkDrive、GoogleDrive、DropboxBusiness。软件设计直观,上手易,可保障数据安全,选择时需考虑企业规模、需求及预算。 一、什么是文件共享软件…

无人机+无人车+机器狗+无人船:大规模组网系统技术详解

无人机、无人车、机器狗和无人船的大规模组网系统技术,是实现海陆空全空间无人设备协同作业的关键。这种组网系统技术通过集成先进的通信、控制、感知和决策技术,使得不同类型的无人平台能够高效、准确地完成各种复杂任务。以下是对该技术的详细解析&…

YOLO11改进|注意力机制篇|引入ELA注意力机制

目录 一、【ELA】注意力机制1.1【ELA】注意力介绍1.2【ELA】核心代码 二、添加【ELA】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【ELA】注意力机制 1.1【ELA】注意力介绍 这篇论文的作者通过分析Coordinate Attention(C…

FPGA时序分析和约束学习笔记(2、FPGA时序传输模型)

Tclk1TcoTdata < Tclk Tclk2 -Tsu Slack Tskew Tclk - Tsu - Tdata - Tco Skew时钟偏斜&#xff1a;时钟从源端口出发&#xff0c;到达目的寄存器和源寄存器的时间差值&#xff08;Tclk2-Tclk1&#xff09; Tsu建立时间&#xff1a;目的寄存器自身的特性决定&#xff…

大语言模型中文本分割策略的综合指南

整理 本文整理了一些简单的文本切分方式&#xff0c;适用于大语言模型经典应用RAG或相似场景。 一般切分 如果不借助任何包&#xff0c;很容易想到如下切分方案&#xff1a; text "我是一个名为 ChatGLM3-6B 的人工智能助手&#xff0c;是基于清华大学 KEG 实验室和智…

everyday_question dq20240731

网卡的作用是什么&#xff1f; 网卡&#xff08;Network Interface Card&#xff0c;NIC&#xff09;&#xff0c;也称为网络适配器&#xff0c;是计算机硬件的一部分&#xff0c;用于实现计算机与网络之间的连接和数据传输。以下是网卡的一些主要作用&#xff1a; 网络连接&a…