关于 SpringBoot 日志文件的知识

news2024/12/24 8:10:40

目录

日志有什么用?

日志怎么用?

自定义日志打印

在程序中得到日志对象

使用日志对象打印日志

日志格式

日志级别的分类与使用

日志级别设置

日志持久化


日志有什么用?

日志对于我们来说,最主要的用途就是排除和定位问题。

除了发现和定位问题之外,我们还可以通过日志实现以下功能:

        记录用户登录日志,方便分析用户是正常登录还是恶意破解用户。

        记录系统的操作日志,方便数据恢复和定位操作人。

        记录程序的执行时间,方便为以后优化程序提供数据支持。

以上这些都是日志提供的非常实用的功能。

日志怎么用?

Spring Boot 项目在启动的时候默认就有日志输出,如下图所示:

通过上述日志信息我们能发现以下 3 个问题:

        1.Spring Boot 内置了日志框架(不然也输出不了日志)。

        2. 默认情况下,输出的日志并非是开发者定义和打印的,那开发者怎么在程序中自定义打印日志呢?

        3. 日志默认是打印在控制台上的,而控制台的日志是不能被保存的,那么怎么把日志永久的保存下来呢?

自定义日志打印

开发者自定义打印日志的实现步骤:

        1. 在程序中得到日志对象。

        2. 使用日志对象的相关语法输出要打印的内容。 

在程序中得到日志对象

在程序中获取日志对象需要使用日志工厂 LoggerFactory,如下代码所示:

private static Logger logger = LoggerFactory.getLogger(UserController.class);

日志工厂需要将每个类的类型传递进去,这样我们才知道日志的归属类,才能更方便、更直观的定位到问题类。

注意:Logger 对象是属于 org.slf4j 包下的

因为 Spring Boot 中内置了日志框架 Slf4j,所以咱们可以直接在程序中调用 slf4j 来输出日志。

使用日志对象打印日志

日志对象的打印方法有很多种,我们可以先使用 info() 方法来输出日志,如下代码所示:

logger.info("--------------要输出日志的内容----------------");

日志格式

日志级别的分类与使用

trace:微量,少许的意思,级别最低;

debug:需要调试时候的关键信息打印;

info:普通的打印信息(默认日志级别);

warn:警告,不影响使用,但需要注意的问题;

error:错误信息,级别较高的错误日志信息;

fatal:致命的,因为代码异常导致程序退出执行的事件。

日志级别的顺序:

越往上接收到的消息就越少,如设置了 warn 就只能收到 warn、error、fatal 级别的日志了。

日志级别设置

日志级别配置只需要在配置文件中设置“logging.level”配置项即可,如下所示:

logging:
  level:
   root: error

配置跟路径的日志级别。

@RestController
@RequestMapping("/user")
public class UserController {
     // 1.得到⽇志对象
     private static Logger logger =
             LoggerFactory.getLogger(UserController.class);
     @Value("${server.port}")
     private String port;
     @Value("${spring.datasource.url}")
     private String url;
     @RequestMapping("/sayhi")
     public String sayHi() {
     // 2.使⽤⽇志打印⽇志
     logger.trace("================= trace ===============");
     logger.debug("================= debug ===============");
     logger.info("================= info ===============");
     logger.warn("================= warn ===============");
     logger.error("================= error ===============");
     return "Hi," + url;
     }
}

默认日志输出级别是info

日志持久化

以上的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程就叫做持久化。

想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后, Spring Boot 就会将控制台的日志写到相应的目录或文件下了。

配置日志文件的保存路径:

# 设置⽇志⽂件的⽬录
logging:
 file:
 path: D:\\home\\test

配置日志文件的文件名:

# 设置⽇志⽂件的⽬录
logging:
 file:
 path: D:/home/tests/pring-1204.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式之行为型-模板方法模式

目录 一、概念 二、角色设计 三、代码实现 四、总结 一、概念 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类当中,使得子类可以不改变该算法结构的情况下重定义该算法的特定步骤,即在一个抽象类中公开定义了执行某一方法的模板…

一种新颖的智能优化算法—飞蛾扑火优化(MFO)算法

飞蛾扑火优化(Moth-Flame Optimization,MFO)算法是Mirjalili于2015年提出的一种新型智能优化算法,其灵感来源于一种特殊的导航机制—横向定位导航,实现了勘探与开发的较好平衡以获得全局优化性能。MFO算法具有并行优化能力强,全局性优且不易落入局部极值…

VS安装中报“应用程序无法启动,因为应用程序的并行配置不正确”的解决办法

1.问题描述 安装应用程序的时候,提示“应用程序无法启动,因为应用程序的并行配置不正确”。 2.解决过程 方法一 开启服务 开始→ 运行(输入services.msc或者服务)→确定后打开服务;找到Windows Modules Installer服务…

Advanced Installer使用指南

PC打包软件有很多 我只推荐一个advanced Installer完全傻瓜式操作,直接点就行了。innoSetUp需要学习它的脚本语言,学习成本太高了,而且网上的学习资料也很少。其它东西 增加依赖 我的程序需要dotNet5.0.13的运行时环境。 但是在AI上面没有…

chatgpt赋能python:Python撤销和回退的完全指南:从基础到高级

Python撤销和回退的完全指南:从基础到高级 Python是一种强大的编程语言,但即使在最好的情况下,错误也会出现。在此时,撤销错误和回退操作会变得非常重要。本指南将介绍Python中的撤销和回退操作,从基础操作到高级操作…

SparkSQL之AstBuilder

Spark SQL是基于ANTLR实现的,前文中有关于ANTLR的介绍文章《ANTLR实战》和《设计模式之访问者模式》,这篇文章主要介绍的内容是AstBuilder类。 Catalyst中提供了直接面向用户的ParseInterface接口,该接口中包含了对SQL语句、Expression表达式…

DDD(领域驱动设计) 核心概念浅析

文章目录 DDD(领域驱动设计) 核心概念浅析前言贫血模型什么是贫血模型贫血模型的优点贫血模型的缺点 充血模型充血模型的优点充血模型的缺点 DP 概念抽象接口简单概念简单概念流程:实现 统一语言和模型价值DP 和 Entity 的区别 Aggregate(聚合&#xff0…

HackTheBox - 学院【CPTS】复习1 - PASSWORD ATTACKS

前言 有一个月时间没发文章了,我在6月11号进入htb学院学习CPTS,在扎实的THM基础的加持下,我学的非常顺利,其实大部分内容都相当于复习,而学到的内容只是一些可能不太常见、又或者非常细节的小技巧,这也是非…

vscode 出现 No such file or directory 的解决办法(python tkinter)

问题 Traceback (most recent call last): File “e:\Github\Python-GUI\PyQt-Fluent-Widgets\examples\navigation\demo.py”, line 202, in w Window() File “e:\Github\Python-GUI\PyQt-Fluent-Widgets\examples\navigation\demo.py”, line 95, in init self.initWindo…

ThreadPoolExecutor源码剖析

ThreadPoolExecutor源码涉及到的内容比较多,需要一点点的去啃和查看… ThreadPoolExecutor的核心属性 ThreadPoolExecutor的核心属性主要就是CTL。基于CTL获取到线程池的状态以及工作线程个数。 ctl是一个int类型的整数,內部基于AtomicInteger&#xff0…

再谈StringBuilder为什么线程不安全以及带来的问题

1 缘起 比较有意思的是,学习锁消除的过程中,有人讲到StringBuffer在方法内构建,不会被其他方法引用时,StringBuffer的锁会被消除, 于是,顺便看了一下同源的StringBuidler为什么线程不安全,以及…

【无标题】TP-LINK XDR5470 WiFi6路由器 简单开箱评测

TL-XDR5470易展版AX5400双频WiFi6路由器 简单开箱测评,上次买的XDR6078覆盖不够,还是得每层再买一个,所以又买了个TL-XDR5470,支持易展mesh。 上次买的XDR6078没有外置FEM功放芯片,所以信号差了一点,得加2…

PE系统盘制作

目录 前言 制作PE盘的步骤如下 前言 PE盘是一个轻量级的系统,类似于Windows系统。当您的计算机无法进入Windows系统时,您可以通过启动PE盘来访问一个独立的操作系统,从而执行各种任务,例如拷贝重要文件或进行系统安装。PE盘通常…

win10查看端口是否被占用,被哪一个程序占用(图文)

window系统中有时候我们会出现需要的端口号被占用,但不知道具体是哪个程序占用的。这时我们需要找到使用此端口的程序。 方法如下: 1)以管理员身份打开命令提示符窗口(开始-运行)。 2)使用命令查看端口使…

R730直通Tesla P40显卡

本次讲述如何在R730的ESXi上,将Tesla P40直通到centos7.7和WinServer2016。使用直通模式,安装普通的驱动即可,不需要vGPU的驱动。 按计划本来后面要自己装一下系统、做RAID的,不过最近需要用到显卡,所以先把显卡安装上…

初探Flink的Java实现流处理和批处理

端午假期,夏日炎炎,温度连续40度以上,在家学习Flink相关知识,记录下来,方便备查。 开发工具:IntelliJ Idea Flink版本:1.13.0 本次主要用Flink实现批处理(DataSet API) 和…

SAM与Prompt的结合

1. SAM介绍 由Meta AI Research开发的Segment anything model(简称SAM)最近引起了广泛的关注。SAM在超过10亿个mask的大型分割数据集上进行了训练,能够在特定的图像上分割任何对象。在最初的SAM工作中,作者们使用了零样本迁移任务…

08- c语言字符串 (C语言)

一 字符串的定义及基本使用 1、什么是字符串 被双引号引用的字符集合!例如:”hello” 、”world”,或者是以 \0 结尾的字符数组!!! 比如:char ch[] {h, e, \0} 注意:”hello” 中…

GB50149-2010电气装置安装工程母线装置施工及验收规范

为了确保强硬钢丝绳金属封闭体绝缘金属封闭母线、绝缘子、硬件、穿墙套管等设备母线的安装质量,加快安装技术的进步,和确保设备的安全运行,使该规范。 本规范适用于总线设备安装了750 kv及以下的T范围施工和验收。 母线的安装应按照批准的设计文件施工。 设备和设备运输、储…

python:并发编程(二十五)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇七,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…