Spring Boot ⽇志

devtools/2024/10/9 13:01:24/

目录

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/devtools/123389.html

相关文章

大数据新视界 --大数据大厂之 Presto 性能优化秘籍:加速大数据交互式查询

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

LabVIEW提高开发效率技巧----阻塞时钟

在LabVIEW开发中,阻塞时钟(Blocking Timed Loops)是一种常见且强大的技术,尤其适用于时间关键的应用。在这些应用中,精确控制循环的执行频率是关键任务。阻塞时钟通过等待循环的执行完成后再进入下一次迭代&#xff0c…

数字安全新时代:聚焦关键信息基础设施安全保障——The Open Group 2024生态系统架构·可持续发展年度大会盛大来袭

在全球数字化转型的浪潮中,关键信息基础设施(Critical Information Infrastructure,简称CII)的安全保障已成为各国政府和企业共同关注的焦点。随着技术的飞速发展和网络威胁的日益复杂,如何构建高效、灵活且安全的数字…

sqlserver-合理化CTFP(cost threshold for parallelism)

文章目录 About CTFPCTFP 默认值的意义合理化CTFP值1.查看高使用次数的执行计划2.调整CTFP值 About CTFP CTFP (Cost Threshold for Parallelism) 是 SQL Server 中的一项配置,用于控制查询执行计划何时使用并行处理。具体来说,它表示执行计划的“子树成…

new Date()解析

JavaScript 中的 new Date() 构造函数用于创建一个表示日期和时间的对象。Date 对象使得你可以以多种方式获取、设置和格式化日期和时间。让我们深入解析一下 new Date() 及其用法。 创建 Date 对象 可以通过多种方式创建 Date 对象: 不带参数: let no…

美容院管理创新:SpringBoot系统设计与开发

摘 要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发…

(17)MATLAB使用伽马(gamma)分布生成Nakagami-m分布的方法1

文章目录 前言一、使用伽马分布生成Nakagami分布随机变量的方法一二、MATLAB仿真代码后续 前言 MATLAB在R2013a版本中引入Nakagami分布对象,可以用来生成Nakagami随机变量。但是在更早的MATLAB版本中,并没有可以直接生成 Nakagami分布的随机变量的内置的…

【预备理论知识——2】深度学习:线性代数概述

简单地说,机器学习就是做出预测。 线性代数 线性代数是数学的一个分支,主要研究向量空间、线性方程组、矩阵理论、线性变换、特征值和特征向量、内积空间等概念。它是现代数学的基础之一,并且在物理学、工程学、计算机科学、经济学等领域有着…