当前位置: 首页 > article >正文

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

目录

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这个目录,如下操作:

 把这个勾上即可~

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


http://www.kler.cn/a/495.html

相关文章:

  • AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航
  • 路由器做WPAD、VPN、透明代理中之间一个
  • 如何使用MySQL WorkBench操作MySQL数据库
  • Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击
  • Ubuntu20.04 交叉编译Qt5.15.15 for rk3588
  • “乡村探索者”:村旅游网站的移动应用开发
  • 【IoT】嵌入式驱动开发:IIC子系统
  • Qt浏览器开发:关于QCef以及qcefview开发原理
  • 做技术,最忌讳东张西望
  • ChatGPT解答:python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例
  • Spring学习——MyBatisPlus入门
  • 极智AI | GPT4来了,ChatGPT又该升级了
  • JS学习第11天——函数进阶(this指向、严格模式、高阶函数、闭包、递归)
  • 一个nginx的小项目,不写代码,实现在局域网内访问其他电脑的网页
  • 裸辞3个月,面试了25家公司,终于找到心仪的工作了
  • C#基础之面向对象编程(二)
  • MySQL:JDBC
  • 快速测试两台服务器间的网速(ChatGPT回复)
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——MYSQL安全测试解析(详细)
  • 【linux】:进程概念
  • 08从零开始学Java之记事本怎么编写Java代码?
  • Java基于UDP实现 客户端/服务器
  • ARM学习(19)交叉编译工具链的理解
  • 解析带小数的字节流
  • Graphics2D绘制图形详解
  • IIS发布.net6 api+微信小程序/H5真机调试接口的流程