Spring Boot ⽇志

news/2024/12/22 2:24:18/

目录

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: 1KBfile-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.ppmy.cn/news/1536538.html

相关文章

基于LORA的一主多从监测系统_AHT20温湿度传感器

1)AHT20温湿度传感器 这个传感器,网上能找到的资料还是比较多的,我们使用的是HAL硬件i2c,相比于模拟i2c,我们不需要过于关注时序问题,我们只需要关心如何获取数据以及数据如何处理,下面以数据手…

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法(Greedy Algorithm),又名贪婪法,是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决…

【stm32】寄存器(stm32技术手册下载链接)

1、资料下载 RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机参考手册 | STMCU中文官网 2、代码 设置PB7 //设置PB7 #define SDA_IN() {GPIOB->CRL&0X0FFFFFFF;GPIOB->CRL|(u32)8<<28;} #define SDA_OUT() {GPIOB->…

HTML CSS 基础

HTML & CSS 基础 HTML一、HTML简介1、网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成1.4总结 2、web标准2.1 为什么需要web标准2.2 Web 标准的构成 二、HTML 标签1、HTML 语法规范1.1基本语法概述1.2 标签关系 2、 HTML 基本结构标签2.1 第一个 HTML 网页2.2 基本结构标签…

力扣 中等 77.组合

文章目录 题目介绍解法代码如下代码运行流程 题目介绍 解法 代码如下 class Solution {//定义成员变量List<List<Integer>> result new ArrayList<>();List<Integer> path new ArrayList<>();public List<List<Integer>> combine(…

ChatGPT国内中文版镜像网站整理合集(2024/9/30)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…

《东北师大学报(自然科学版)》

东北师大学报&#xff08;自然科学版&#xff09;是教育部主管、东北师范大学主办、东北师范大学学术期刊社编辑出版的自然科学综合性学术期刊&#xff0c; 1951年创刊&#xff0c;季刊&#xff0c;国内外公开发行。国际标准连续出版物号&#xff1a;ISSN 1000&#xff0d;1832…

OceanBase 3.2.2 数据库问题处理记录

只记录OceanBase 数据库与OCP的异常处理&#xff0c;其它组件暂时不写录。 一、问题1&#xff1a; 说明&#xff1a;OMS 出现异常&#xff0c;无法访问(OB无法访问) OB数据库架构&#xff1a;1:1:1 原因&#xff1a;某一台OBserver因为内存问题&#xff0c;被服务器直接kill掉…