JavaEE进阶学习: SpringBoot 日志文件

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.mzph.cn/news/219066.shtml

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

相关文章

Intellij IDEA 运行maven报错误“CreateProcess error=2, 系统找不到指定的文件“的完美解决方案

一、问题背景 博主正常使用着Intellij IDEA,不知道为什么突然Intellij IDEA报错,错误提示如下: Error:Cannot run program "C:\Program Files\Java\jdk1.8.0_351" 观察Intellij IDEA报错的原因,我们可以知道&#xff1…

【LeetCode刷题-栈】-- 150.逆波兰表达式求值

150.逆波兰表达式求值 方法&#xff1a;使用栈 class Solution {public int evalRPN(String[] tokens) {Stack<Integer> numStack new Stack<>();for(int i 0; i < tokens.length;i){String token tokens[i];if(isNumber(token)){numStack.push(Integer.par…

免费!简单优雅的手机视频制作PR模板抖音素材下载

这是一款多功能的Premiere Pro模板&#xff0c;无论你是为视频、宣传内容还是社交媒体帖子短视频&#xff0c;这个pr模板都会为你的项目增添一丝优雅和专业。适用于广播&#xff0c;俱乐部&#xff0c;音乐会&#xff0c;舞蹈&#xff0c;设计&#xff0c;宣传片&#xff0c;动…

Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓

一、前言 随着监控行业的发展&#xff0c;越来越多的用户场景是需要在手机上查看监控&#xff0c;而之前主要的监控系统都是在PC端&#xff0c;毕竟PC端屏幕大&#xff0c;能够看到的画面多&#xff0c;解码性能也强劲。早期的手机估计性能弱鸡&#xff0c;而现在的手机性能不…

外显记忆LLM

外显记忆 概念 概念 智能需要知识并且可以通过学习获取知识&#xff0c;这已促使大型深度建构的发展。然而&#xff0c;知识是不同的并且种类繁多。有些知识是隐含的、潜意识的并且难以用语言表达----比如怎么行走或狗与猫的样子有什么不同。其他知识可以是明确的、可陈述的以…

nvm 的使用 nvm 可以快速的切换 nodejs 的版本

nvm 是什么&#xff1f; nvm 是一个 node 的版本管理工具&#xff0c;可以简单操作 node 版本的切换、安装、查看。。。等等&#xff0c;与 npm 不同的是&#xff0c;npm 是依赖包的管理工具。 nvm 下载安装 安装之前需要先把 自己电脑上边的 node 给卸载了!!!! 很重要 下载地…

揭示 ETL 系统架构中的 OLAP、OLTP 和 HTAP

探索 ETL 系统设计需要了解 OLAP、OLTP 和不断发展的 HTAP。让我们试图剖析这些范式的复杂性。 1. OLAP&#xff08;联机分析处理&#xff09;&#xff1a; OLAP 是商业智能的中流砥柱&#xff0c;通过 OLAP 立方体进行多维数据分析。这些立方体封装了预先聚合、预先计算的数据…

zabbix——实现高效网络监控

在当今的数字化时代&#xff0c;网络和服务器的健康状况对于企业的正常运营至关重要。为了及时发现和解决潜在的问题&#xff0c;许多企业选择使用网络监控工具来追踪服务器的性能和网络参数。其中&#xff0c;Zabbix是一个功能强大且开源的网络监控工具&#xff0c;被广泛应用…

算法Day32 买卖椰子水

买卖椰子水 Description 在海滩上&#xff0c;一杯椰子水的售价为5元。一名顾客一次购买一杯椰子水&#xff08;按照bills支付的顺序&#xff09;。 每位顾客购买椰子水时&#xff0c;可能向你支付 5 元、10 元或 20 元。你必须给每个顾客正确找零&#xff0c;对于支付 5 元的…

2023-12-13 VsCode + CMake + Qt环境搭建

点击 <C 语言编程核心突破> 快速C语言入门 VsCode CMake Qt环境搭建 前言一、前期准备二、具体设置总结 前言 要解决问题: 最近研究 Qt, 使用 qtcreator, 发现在搭建 UI 界面时候很方便, 但到编码和调试就比较有问题了. 想到的思路: 用 VSCode 进行编码及调试. 其它…

python 安装对应版本的lxml

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

JAVA实体类集合该如何去重?

JAVA实体类集合该如何去重&#xff1f; 最近在工作中经常遇到需要去重的需求&#xff0c;所以特意系统的来梳理一下 有目录&#xff0c;不迷路 JAVA实体类集合该如何去重&#xff1f;单元素去重方法一&#xff1a;利用Set去重方法二&#xff1a;利用java 8的stream写法&#xf…

MySQL主从复制与读写分离实验

实验一、MySQL主从服务器搭建 实验前准备 Master服务器&#xff1a;192.168.188.14 mysql5.7 Slave服务器1&#xff1a;192.168.188.15 mysql5.7 Slave服务器2&#xff1a;192.168.188.16 mysql5.7 关闭虚拟机防火墙 systemctl stop firewalld setenforce 0 主服务器准…

Selenium自动化(上)

Selenium 安装 环境准备 第一种方式 Python 自带的 pip 工具安装。 pip install selenium4.12.0安装完成后&#xff0c;查看安装的 Selenium 版本号。 pip show selenium第二种方式 安装 Selenium 的前提是拥有 Python 开发环境&#xff08;推荐使用 PyCharm&#xff09;。…

[LCTF 2018]bestphp‘s revenge

文章目录 前置知识call_user_func()函数session反序列化PHP原生类SoapClient 解题步骤 前置知识 call_user_func()函数 把第一个参数作为回调函数调用 eg:通过函数的方式回调 <?php function barber($type){echo "you wanted a $type haircut, no problem\n";}c…

Android开发经验记录_对多个Path形成的图形进行填充踩坑与怕坑记录

需求&#xff1a; 通过其他同事对二值化后的图像生成的图形轨迹&#xff0c;形成Path&#xff0c;并绘制到Canvas中。 初步实现测试&#xff1a; 1、paint先使用stroke对获取的扫描点连成一个个path看看效果先 canvas.save();Paint paint new Paint();paint.setStrokeWidth(…

git 实用命令杂记

使用解决冲突的方式合并&#xff0c;将避免简单的自动合并 git merge origin/dev --strategyresolve清理本地已经合并到 dev 的分支 git branch --merged | grep -v dev | xargs -n 1 git branch -d分支清理 Git 之删除本地无用分支_dearfulan 的博客 - CSDN 博客_git 删除本…

白日门引擎传奇手游架设教程-GM的成长之路

准备工具 服务器一台&#xff08;Windows系统&#xff09;白日门引擎服务端版本一个 前言&#xff1a; 此次教程使用的是版本是一个决战斗罗的一个版本、服务器使用的是驰网科技的游戏高频系列服务器。 教程开始 在我们拿到版本之后、我们需要先把版本解压到服务器D盘的根目录…

四六级高频词组7

目录 词组 其他文章链接&#xff1a; 词组 251. &#xff08;be&#xff09; equivalent to&#xff08;equal in value&#xff0c; amount&#xff0c; meaning&#xff09; 相等于&#xff0c; 相当于 252. in essence &#xff08;in itsones nature&#xff09; 本质上…

处理获取当前日期---------------年月日//时分秒

当前时间&#xff0c;先分组匹配&#xff0c;以数组下标索引匹配定义的汉字进行替换 处理日期方法 /* 日期格式化 */ const formatTime function formatTime(time, template) {if (typeof time ! "string") {time new Date().toLocaleString(zh-CN, { hour12: fal…