程序员必会技能—— 使用日志

目录

1、为什么要使用日志

 2、自定义日志打印

2.1、在程序中得到日志对象

 2.2、使用日志对象打印日志

 2.3、日志格式

3、日志的级别

3.1、日志级别的分类

3.2、日志级别的设置

4、持久化日志

 5、更简单的日志输出——lombok

5.1、如何在已经创建好的SpringBoot项目中添加依赖 

5.2、代码变化:

 5.3、lombok原理解释


1、为什么要使用日志

  • 能够发现和定位问题
  • 能够记录用户登录日志,便与分析用户是正常登录还是恶意破解用户
  • 能够记录系统的操作日志,方便数据恢复和定位操作人
  • 记录程序的执行时间,方便为以后优化程序提供数据支持

例如SpringBoot项目启动时,输出的控制台日志信息:


 2、自定义日志打印

步骤:

  • 在程序中得到日志对象
  • 使用日志对象的相关语法输出要打印的内容

2.1、在程序中得到日志对象

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

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

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

怎么理解这个问题呢?

        也就是说,日志的实现是会有很多种方式,而开发者们掌握的技能可能并不统一,就会造成,每个程序员都是用不同的方式去实现日志,当一个程序员离职后,另一个程序员想要修改一些日志输出格式等之类的东西,就会很麻烦,所以日志的门面就在这里起作用了,成功做到了解耦,开发者就只需要负责调用对接slf4j,而不需要关注日志是如何实现的了

 2.2、使用日志对象打印日志

package com.example.demo;

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

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:龙宝
 * Date:2023-03-13
 * Time:15:40
 */
@RestController
@RequestMapping("/test")
public class ControllerTest {
    //1、得到日志对象
    private static Logger logger = LoggerFactory.getLogger(ControllerTest.class);
    @RequestMapping("/hi")
    public String sayHi() {
        //写日志
        logger.trace("日志:trace");
        logger.debug("日志:debug");
        logger.info("日志:info");
        logger.warn("日志:warn");
        logger.error("日志:error");
        return "日志打印";
    }

}

        将项目启动后,在url输入对应的地址,访问后,回到IDEA,就会看到自己定义的日志了~

        为了可以看清楚,咱可以把Spring Boot项目启动时打印的日志删除掉:

访问:

 

日志:

 

 2.3、日志格式

日志归属,也可能是缩写,如: 

前面两个缩写~ 

        有小伙伴可能看到,打印的日志并不全,明明写五个,只打印了3个,为什么?这里就会引出日志的级别啦~


3、日志的级别

3.1、日志级别的分类

  • trace:微量,少许,级别最低
  • debug:需要调试时候的关键信息打印
  • info:普通的打印信息(默认日志的级别)
  • warn:警告,不影响使用,但需要注意的问题
  • error:错误信息,级别较高的错误日志信息
  • fatal:致命的,因为代码异常导致程序退出执行的事件

日志级别的顺序:

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

3.2、日志级别的设置

日志级别配置在配置文件中配置:


logging:
  level:
    root: error

4、持久化日志

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

        将日志保存下来,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后,SpringBoot就会将控制台的日志写到相应的目录或文件下了~

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

logging:
  file:
    path: D:\\CCL\\rizhi

 配置文件的文件名:

logging:
  file:
    path: D:\\CCL\\rizhi\\spring0313.log

 重新启动代码,访问对应网页,然后去查看对应文件夹:

我这的重复是因为我刚才不小心,将页面刷新了好几遍 ~


 5、更简单的日志输出——lombok

每次创建一个新的类,需要的打印日志信息时,都需要:

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

稍显繁琐,因此使用lombok来更简单的输出:

  1. 添加lombok框架支持
  2. 使用@slf4j注解输出日志

5.1、如何在已经创建好的SpringBoot项目中添加依赖 

        如果,一开始创建项目时,没有添加lombok依赖,则需要添加lombok依赖,在已经创建好的SpringBoot项目中添加依赖,需要借助插件

 然后将页面跳转到pom.xml上,右击:

 

 

 

然后就可以啦~ 

5.2、代码变化:

 5.3、lombok原理解释

我们查看target目录【target为项目最终执行的代码】:

 没有对应的slf4j注释了,而变成了最原来的创建日志对象的操作~

ps:如果有同学没有target这个目录,如下操作:

 把这个勾上即可~

好啦,本期到这里就结束咯~下期见~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python+ChatGPT实战之进行游戏运营数据分析

文章目录一、数据二、目标三、解决方案1. DAU2. 用户等级分布3. 付费率4. 收入情况5. 付费用户的ARPU最近ChatGPT蛮火的,今天试着让ta写了一篇数据分析实战案例,大家来评价一下!一、数据 您的团队已经为您提供了一些游戏数据,包括…

MySQL数据库的基础语法总结(1)

MySql一.数据库,数据表的基本操作1.数据库的基本操作2. 数据表的基本操作2.1 数据库的数据类型2.1.1 整数类型2.1.2 浮点数类型和定点数类型2.1.3 字符串类型2.1.4 日期与时间类型2.2 数据表的基本操作2.2.1 创建一个数据表2.2.2 查看数据表2.2.3 查看表的基本信息的MySQL指令2…

【拳打蓝桥杯】最基础的数组你真的掌握了吗?

文章目录一:数组理论基础二:数组这种数据结构的优点和缺点是什么?三:数组是如何实现随机访问的呢?四:低效的“插入”和“删除”原因在哪里?五:实战解题1. 移除元素暴力解法双指针法2…

前端开发神器VS Code安装教程

✅作者简介:CSDN一位小博主,正在学习前端 📃个人主页:白月光777的CSDN博客 💬个人格言:但行好事,莫问前程 安装VS CodeVS Code简介VS Code安装VS Code汉化结束语💡💡&…

嵌入式学习笔记——STM32的USART收发字符串及串口中断

USART收发字符串及串口中断前言字符串的收发发送一个字符串接收字符串需求利用串口实现printf中断中断是什么前言 上一篇中,介绍了串口收发相关的寄存器,通过代码实现了一个字节的收发,本文接着上面的内容,通过功能函数实现字符串…

Elasticsearch:集群管理

在今天的文章中,我们应该学习如何管理我们的集群。 备份和分片分配是我们应该能够执行的基本任务。 分片分配过滤 Elasticsearch 将索引配到一个或多个分片中,我们可以将这些分片保存在特定的集群节点中。 例如,假设你有多个数据集群节点&am…

项目实战-瑞吉外卖day02(B站)持续更新

瑞吉外卖-Day02课程内容完善登录功能新增员工员工信息分页查询启用/禁用员工账号编辑员工信息分析前端页面效果是如何实现的为什么点击左边 右边会根着变化首先 我们先来看一下菜单是如何展示出来的 在来看一下 为啥点击菜单时 右边会跟着变第一 :菜单是如何展示出来…

【剑指offer-C++】JZ32:从上往下打印二叉树

题目描述 描述:不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数…

我用Python写了一个下载网站所有内容的软件,可见即可下,室友表示非常好用

Python 写一个下载网站内容的GUI工具,所有内容都能下载,真的太方便了!前言本次要实现的功能效果展示代码实战获取数据GUI部分最后前言 哈喽大家好,我是轻松。 今天我们分享一个用Python写下载视频弹幕评论的代码。 之前自游写了…

计算机网络复习

什么是DHCP和DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的…

ARM uboot 的移植4 -从 uboot 官方标准uboot开始移植

一、添加DDR初始化1 1、分析下一步的移植路线 (1) cpu_init_crit 函数成功初始化串口、时钟后,转入 _main 函数,函数在 arch/arm/lib/crt0.S 文件中。 (2) 在 crt0.S 中首先设置栈,将 sp 指向 DDR 中的栈地址; #if defined(CONF…

被骗进一个很隐蔽的外包公司,入职一个月才发现,已经有了社保记录,简历污了,以后面试有影响吗?...

职场的套路防不胜防,一不留神就会掉坑,一位网友就被“骗”进了外包公司,他说公司非常隐蔽,入职一个月才发现是外包,但已经有了社保记录,简历污了,不知道对以后面试有影响吗?楼主说&a…

【含源码】用python做游戏有多简单好玩

有很多同学问我还有其他什么小游戏吗,游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如何使用Python做游戏。 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停↓ 更多小游戏可以评论区讨论哦,喜欢…

保姆级使用PyTorch训练与评估自己的Replknet网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…

【C++】模板进阶

模板进阶 文章目录模板进阶1、非类型模板参数2、模板的特化2.1.概念2.2.函数模板特化2.3.类模板特化2.3.1.全特化2.3.2.偏特化2.4.类模板特化示例3、模板总结1、非类型模板参数 模板参数分类类型形参与非类型形参。类型模板参数:出现在模板参数列表中,跟…

技术人的管理学-团队管理

主要内容前言团队管理,如何让猪上树?选人育人用人留人总结前言 本周报名参加了 风 变 科 技推出的管理学MTP培训课,花了点小钱,感觉还是有用的,可惜时间安排都在8点以后,刚好是看孩子的时间,只…

io流概述

public static void main(String[] args) throws IOException {//1.与文件建立联系 File->数据源File src new File("D://AAA/test.txt");//2.创建文件字节输入流->管道//InputStream is new FileInputStream(src);InputStream is new FileInputStream(&quo…

中科亿海微FPGA

国产FPGA中,紫光、安路、高云称得上是三小龙,其他的半斤八两,中科亿海微也算是其中之一。 其产品为亿海神针系列,如下: 可见其最小规模也有9.2KLUT,最大竟有136K之多了,对比其他国产&#xff0…

18、江科大stm32视频学习笔记——USART串口发送串口发送和接收

目录 一、USART串口发送 1、电路图 2、printf函数的移植方法 3、serial.c 4、main.c 5、解决直接写汉字,编译器报错 二 、USART串口发送和接收 1、查询实现 2、中断实现 (1)在Serial.c中添加的代码 (2)主函…

【Spring从入门到实战】第 4 讲:SpringAOP实现以及原理

本文已收录于专栏🌲《Spring从入门到实战》🌲专栏前言 大家好,我是执梗。本专栏将从Spring入门开始讲起,详细讲解各类配置的使用以及原因,到使用SpringBoot进行开发实战,旨在记录学习生活的同时也希望能帮到…