广州中新知识城开发建设网站,千华网鞍山门户网站,模板搭建网站,四川成都企业高端网站建设前言 本篇博客主要介绍自定义的日志打印、日志的级别高低、如何保存日志等等.....
一、日志是什么#xff1f;日志有什么用#xff1f;
日志就是我们控制台上输出的内容#xff0c;控制台上的输出的信息就是日志信息#xff0c;如下所示#xff1a; 日志有什么用#x…前言 本篇博客主要介绍自定义的日志打印、日志的级别高低、如何保存日志等等.....
一、日志是什么日志有什么用
日志就是我们控制台上输出的内容控制台上的输出的信息就是日志信息如下所示 日志有什么用 日志最大的作用就是可以定位和发现问题除了发现和定位问题之外我们还可以通过⽇志实现以下功能
记录⽤户登录⽇志⽅便分析⽤户是正常登录还是恶意破解⽤户。
记录系统的操作⽇志⽅便数据恢复和定位操作⼈。
记录程序的执⾏时间⽅便为以后优化程序提供数据⽀持。
以上就是⽇志的一些主要功能。
二、自定义日志打印
2.1、能否使用System.out.print来打印日志 前面我们说过日志就是输出在控制台的信息那么我们自定义日志打印是不是就是直接使用System.out.print来输出信息到控制台呢我们先来看一下日志包含的各个信息再来说是否可以直接使用System.out.print来输出。 日志的格式说明 通过这个我们可以看出打印的日志信息中时间、打印日志所在的类、日志的具体信息这些我们都可以在System.out.print中直接输出但是日志的级别我们是无法获取的日志级别也是很重要的可以在我们排查问题的时候可以根据日志级别来更快的找到我们所要的信息的。 还有一点很重要的是System.out.print打印的信息无法持久化的保存。因此我们使用System.out.print来打印日志是不合适的。
2.2、使用Logger对象打印日志 首先我们要在程序中获取⽇志对象需要使⽤⽇志⼯⼚LoggerFactory。接着再通过日志对象打印日志。
需要注意的是Logger 对象是属于 org.slf4j 包下的不要导⼊错包。
接下来我们用代码来演示一下
这里一定得选择slf4j这个包下的Logger类 到了这里之后这里会出现两个getLogger方法这两个方法的区别在于
一个是传入一个类对象一个是直接传一个字符串
传递这个的意义就在于在打印日志时输出的类所在的位置当我们传入的是一个字符串时打印出来的效果就是我们自己设置的位置当我们传入当前类对象的时候打印出来的效果就是这个类所在的具体位置从包名到类名十分详细。因此这里建议传入一个类对象。 打印日志代码
package com.example.bloglog.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class TestController {private static final Logger log LoggerFactory.getLogger(TestController.class);RequestMapping(/sayhi)public String sayHi(){log.trace(trace日志);log.debug(debug日志);log.info(info日志);log.warn(warn日志);log.error(error日志);return hello;}
}
运行结果 以上代码就是最基本的自定义日志打印的代码了但是这里我们预计是输出五个日志都打印但是这里只打印了后面的三个日志这里就涉及到日志级别及日志级别的问题了。
三、日志级别 日志总的来说可以分为六个级别分别是 trace微量少许的意思级别最低 debug需要调试时候的关键信息打印 info普通的打印信息默认⽇志级别 warn警告不影响使⽤但需要注意的问题 error错误信息级别较⾼的错误⽇志信息 fatal致命的因为代码异常导致程序退出执⾏的事件。 日志级从高到底排序图 日志默认级别的设置如下所示只需要设置logging.level,rootxxx(设置日志级别)即可 以下代码我们是设置了日志级别为trace代表的就是trace及以上的日志就会输出如果不设置的话默认的日志级别就是info只有大于等于info级别的日志才会输出。
四、日志持久化保存 我们在生产环境上的日志是需要保存下来的因为一旦在生产环境下出现了什么问题我们才可以通过日志来进行分析问题进而才能更快更好的解决问题。 日志的持久化保存我们需要设置的东西有两个一个是日志文件的名称一个是日志文件的保存位置。
4.1、使用logging.file.path设置日志路径
对于设置日志的保存位置及日志的名称我们需要在配置文件中进行设置设置的代码如下 使用logging.file.path设置来保存的路径但是这个方法设置不了日志的文件名只能设置日志保存的位置运行之后产生的日志文件如下所示默认的日志文件名就是spring.log 4.2、使用logging.file.name设置日志保存位置及名称 我们还可以使用logging.file.name来设置使用这个方法设置我们不仅可以设置日志的保存位置还可以设置日志名称。设置代码如下所示 运行后产生的文件如下这时候我们就可以设置日志名称和位置了 当我们使用logging.file.name设置了日志文件名称之后不设置保存路径默认会保存到当前项目的路径下。如下所示 4.3、能不能使用logging.file.path设置日志保存位置再使用logging.file.name来设置日志保存名称 答案是不可以因为当这两个属性一起出现时会以logging.file.name为主就不会再去看logging.file.path的设置了如果这时候logging.file.name中没设置路径的话就会直接保存到当前项目的路径下。如下所示 4.4、关于 logging.file.path与logging.file.name的总结 对于logging.file.name和logging.file.path的使用我们只需要记住以下三点规则 1.logging.file.path只能设置日志保存的位置不能设置日志保存名称 2.logging.file.name既可以设置日志保存位置名称但是不能单独设置日志保存的位置 3.当logging.file.name和logging.file.path一起使用时会以logging.file.name的设置为主logging.file.path中的设置不生效。 还有一个需要特别注意的就是当我们只使用了logging.file.name并且只设置了日志的保存位置时没有设置日志的名称时即使这时候也使用logging.file.path设置路径了日志都是不会保存的如下所示 五、使用Lombok更简单的打印日志 我们前面的自定义日志输出需要在每一个类中都去从日志工厂获取一个日志对象而且在选择LoggerFactory的时候还需要特别注意一不小心就会选错选成其他包下面的因此这还是比较麻烦的。这里我们就可以直接使用Lombok来获取日志对象这样子不仅不容易出错而且还更简单。代码如下所示 至于如何在IDEA中安装使用Lombok可以看这篇博客☞ Spring执行流程及Bean的作用域与生命周期_小白学编程的博客-CSDN博客