JavaEE进阶学习: SpringBoot 日志文件

news2024/12/26 21:43:02

1.日志有什么用

日志的主要作用是记录系统的运行状态、事件和错误信息等。具体来说,日志可以用于以下几个方面:

  1. 故障排除:当系统出现故障或错误时,日志可以帮助开发人员定位问题的具体原因和位置,从而更快地修复系统。

  2. 监控和分析:通过分析日志文件,可以了解系统的运行情况,例如系统的负载、性能瓶颈、用户行为等信息,从而帮助进行系统监控和性能优化。

  3. 安全审计:日志可以记录用户的操作行为和系统的安全事件,用于追踪和审计系统安全问题,例如入侵检测、恶意访问等。

  4. 系统运维:日志可以记录系统的运行过程、维护操作和配置变更等信息,用于管理和维护系统,保证系统的稳定性和可用性。

总的来说,日志是系统运维和开发过程中的重要工具,通过收集和分析日志可以提高系统的稳定性、性能和安全性。

2.日志怎么用

Spring Boot 项目在启动的时候默认就有日志输出

在这里插入图片描述

System.out.print 打印日志的问题:
在这里插入图片描述

  1. 无时间(可以自己加)

  2. 无日志级别

  3. 无打印日志的执行位置(可以自己加)

  4. 无法持久化

3.自定义日志打印

在程序中获取日志对象需要使用日志工厂 LoggerFactory

// 1.得到日志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class);

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

在这里插入图片描述

package com.example.demo.controller;

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



/**
 * @projectName: Demo
 * @package: com.example.demo.controller
 * @className: LogController
 * @author: 王嘉辉
 * @description:
 * @date: 2023/12/13 16:49
 * @version: 1.0
 */
@RestController
public class LogController {

    //1.得到日志对象
    private static Logger log = LoggerFactory.getLogger(LogController.class);

    @RequestMapping("/log")
    public void log() {
        String msg = "日志学习";
        log.trace("trace -> " + msg);
        log.debug("debug -> " + msg);
        log.info("info -> " + msg);
        log.warn("warn -> " + msg);
        log.error("error -> " + msg);
    }
}

在这里插入图片描述

4.日志级别的分类与使用

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

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

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

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

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

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

    在这里插入图片描述

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

日志级别的作用:过滤信息,将业务不需要的日志屏蔽掉

为什么 Spring Boot 可以打印日志? 并设置日志级别?

因为 Spring Boot 内置了两个日志框架 SLF4J + LogBack
SLF4J 让开发者使用和调用的框架
LogBack最底层实现日志相关操作的框架

给某个文件夹单独设置日志级别

在这里插入图片描述

5.日志持久化

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

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

# 设置⽇志⽂件的⽬录
logging:
 file:
 path: D:\\study\\rizhi
# 设置⽇志⽂件的⽂件名
logging:
 file:
 name: D:\\study\\rizhi\\spring.log

在这里插入图片描述

6.lombok

每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这里讲一种更好用的日志输出方式,使用 lombok 来更简单的输出。

  1. 添加 lombok 框架支持

  2. 使用 @slf4j 注解输出日志。

前置工作(重要):无论什么类型的idea都必须先安装一个 lombok 插件。

在这里插入图片描述

在项目中添加 lombok 的依赖

在这里插入图片描述

7.lombok 更多注解说明

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.使用 lombok 更加简单的输出日志

package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @projectName: Demo
 * @package: com.example.demo.controller
 * @className: LogController2
 * @author: 王嘉辉
 * @description:
 * @date: 2023/12/13 20:39
 * @version: 1.0
 */
@RestController
@Slf4j  //当前的类中就可以直接使用 log 对象了 @Slf4j 产生一个 log 对象,直接使用
public class LogController2 {

    @RequestMapping("/log2")
    public void log2() {
        log.trace("trace log2");
        log.debug("debug log2");
        log.info("info log2");
        log.warn("warn log2");
        log.error("error log2");
    }
}

在这里插入图片描述

9.lombok 的原理

在这里插入图片描述

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

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

相关文章

计算机网络简答题

面向连接和非连接的服务特点 面向连接的服务:通信双方在进行通信之前,要事先建立一个完整的可以彼此沟通的通道,在通信过程中整个连接的情况可以被实时的监控和管理 面向非链接的服务:不需要预先建立一个联络两个通信节点的连接&a…

【obs】官方最强插件obs-websocket入门

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ obs-websocket简介OBS版本说明obs-websocket版本说明安装(27.x版本OBS)配置插件 2️⃣ OBS-web介绍特征使用方法-5.xhttp vs https 3️⃣ obs-websocket-js开发tester.html 4️⃣ 其它开源项目obs-stud…

做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

----查询每天刷题通过数最多的前二名用户id和刷题数 现有牛客刷题表questions_pass_record,请查询每天刷题通过数最多的前二名用户id和刷题数,输出按照日期升序排序,查询返回结果名称和顺序为: date|user_id|pass_count 表单创建…

双指针的运用——双数之和II和三数之和

两数之和 https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/ 我们考虑这个排序过的数组,首先一个指针在最左,一个在最右。如果这两个数字比目标数字来的要小,那么如果我们左边指针移动了,移动后一定变…

高通平台开发系列讲解(USB篇)linux下如何让U盘可以识别问题

文章目录 一、简述二、修改方法三、宏介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 一、简述 对于一些U盘不能自动被Linux内核识别的情况,可能需要进行一些调整和修改内核驱动的设置。 二、修改方法 在kernel中开启以下的宏开关 CONFIG_USB_STORAGE=y CONFIG_SCSI=…

uniapp原生插件之安卓app添加到其他应用打开原生插件

插件介绍 安卓app添加到其他应用打开原生插件,接收分享的文本和文件,支持获取和清空剪切板内容 插件地址 安卓app添加到其他应用打开原生插件,支持获取剪切板内容 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 详细使用文档 u…

第三届《我们的世界》---2023 国际当代艺术展在广州沙面隆重启幕

开幕快讯 2023年12月10日下午,由法国表现主义画院与东方荟萃艺术学院 联合主办的,由法中艺术交流协会、香港博物馆世界、让米歇尔艺术空 间共同协办,法国驻广州总领事馆支持的第三届《我们的世界》---2023 国际当代艺术展在广州沙面隆重启幕! 嘉宾签到现场 本次展览集合了30位活…

50.0/表格(详细版)

目录 50.1 建立表格 50.2 表格边框 50.3 设置表格或单元格的宽度和高度 50.4 表格的背景设置 50.5 表格边框颜色的设置 50.6 表格的位置 50.6.1 水平位置 50.6.2 垂直位置 50.7 为表格添加表头和标题 50.8 单元格的合并 50.8.1 跨行 50.8.2 跨列 50.9 综合示例 通…

Android---Kotlin 学习005

substring 字符串截取。相加与 java,kt 里面的 substring 函数支持 IntRange 类型(表示一个整数范围的类型)的参数,until 创建的范围不包括上限值。 const val NAME "Jimmys friend" fun main(){val index NAME.ind…

python 安装对应版本的lxml

安装对应版本的lxml 先把对应版本的lxml文件下载下来,接着在文件夹路径输入cmd回车,用下面命令安装。

《洛谷深入浅出进阶篇》 进阶数论

本文章内容比较长,请耐心食用!!!!! 目录: 模意义下的数和运算喵~ 模意义下的乘法逆元喵~ 同余方程与中国剩余定理喵~ 线性筛与积性函数喵~ 欧拉函数喵~ 一,模意义下的数和运算。…

Android : Room 数据库的基本用法 —简单应用_一_入门

1.Room介绍: Android Room 是 Android 官方提供的一个持久性库,用于在 Android 应用程序中管理数据库。它提供了一个简单的 API 层,使得使用 SQLite 数据库变得更加容易和方便。 以下是 Android Room 的主要特点: 对象关系映射…

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求, 2.从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…

SpringBoot 实现动态切换数据源

最近在做业务需求时,需要从不同的数据库中获取数据然后写入到当前数据库中,因此涉及到切换数据源问题。本来想着使用Mybatis-plus中提供的动态数据源SpringBoot的starter:dynamic-datasource-spring-boot-starter来实现。 结果引入后发现由于…

2024测试开发面试题完整版本(附答案)

目录 1. 什么是软件测试, 谈谈你对软件测试的了解 2. 我看你简历上有写了解常见的开发模型和测试模型, 那你跟我讲一下敏捷模型 3. 我看你简历上还写了挺多开发技能的, 那你给我讲讲哈希表的实现流程 4. 谈一谈什么是线程安全问题, 如何解决 5. 既然你选择走测…

云计算与大数据技术应用知识及案列

云计算与大数据技术应用知识及案列 简述什么是云计算? 答:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;云计算是一种无处不在的、便捷的通过互联网访问一个可定制的IT资源(IT资源包括网络、服…

C++STL的stack和queue(超详解)

文章目录 前言stack栈的题目最小栈JZ31 栈的压入、弹出序列 stack的模拟实现queue的模拟实现 前言 栈和队列这一块其实有数据结构的基础,学起来非常简单。 stack 栈的成员函数就这么写,除了emplace其他都已经非常熟悉了。 stack没有迭代器吗&#xff…

芝麻杂草目标检测数据集VOC+YOLO格式近1300张

芝麻,芝麻科芝麻属的一年生草本植物,茎中空或具白色髓部;叶子为卵形;花朵单生或少数同生于腋下,呈白色;芝麻蒴果基部钝圆,顶部有尖,中间有棱;芝麻的种子通常呈扁平椭圆形…

MIT6.5840-2023-Lab2C: Raft-Persistence

前置知识 见上一篇 Lab2A。 实验内容 实现 RAFT,分为四个 part:leader election、log、persistence、log compaction。 实验环境 OS:WSL-Ubuntu-18.04 golang:go1.17.6 linux/amd64 Part 2C: persistence 大部分的bug都与这…

Go EASY游戏框架 之 RPC Guide 03

1 Overview easy解决服务端通信问题,同样使用了RPC技术。easy使用的ETCDGRPC,直接将它们打包组合在了一起。随着服务发现的成熟,稳定,简单,若是不用,甚至你也并不需要RPC来分解你的架构。 GRPC 有默认res…