您现在的位置是:群英 > 开发技术 > 编程语言
SpringBoot日志的作用、使用、级别和持久化是什么
Admin发表于 2022-09-17 17:12:45874 次浏览
在实际案例的操作过程中,我们可能会遇到“SpringBoot日志的作用、使用、级别和持久化是什么”这样的问题,那么我们该如何处理和解决这样的情况呢?这篇小编就给大家总结了一些方法,具有一定的借鉴价值,希望对大家有所帮助,接下来就让小编带领大家一起了解看看吧。


1. 日志的作用

日志是程序的重要组成部分,在程序报错的时候,如果我们不看日志,是很难排查出错误的,除非你真的是很有经验.所以日志最主要的作用就是排除和定位问题.

日志提供的功能:

  • 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
  • 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。
  • 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持

2. 日志怎么用

在我们启动 SpringBoot 项目的时候就会输出日志:

3. 自定义日志打印

主要分两个步骤:

在一个类中先获得打印日志对象(日志框架提供的日志对象,而日志框架默认已经集成到 SpringBoot 里了)使用日志对象提供的方法实现日志的打印

3.1 得到日志对象

得到日志对象 Logger ,它来自于 slf4j,不要导错了包,在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory

3.2 使用日志对象提供的方法打印日志

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.ResponseBody;
@Controller
@ResponseBody
public class UserController {
//1. 先得到日志对象(来自 slf4j)
    private static final Logger log =
        LoggerFactory.getLogger(UserController.class); //设置当前的类型
    @RequestMapping("/sayhi")
    public void sayHi(){
        //2. 使用日志对象提供的打印方法进行日志打印
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");
    }
}

有些没打印,因为他只会打印跟他同级别的或者比他级别高的日志,他这里默认是 info 级别.

3.3 日志格式说明

4. 日志级别

反馈一些需要的日志,并不需要把所有的都打印出来

就像是如果你是一家 2 万人的公司的老板,需要每天看他们的反馈信息,难道每个人都看吗?这显然看不完,你只需要看一些领头的就行…

4.1 日志级别分类

日志级别分为:

  • trace: 微量,少许的意思(级别最低)
  • debug: 调试日志
  • info: 普通信息日志
  • warn: 警告日志
  • error: 错误日志
  • fatal: 致命的日志(系统输出的日志,不能自定义打印)

日志级别的顺序:

越往上接收到的消息就越少。

4.2 日志级别的配置

⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可:

# 设置全局的日志级别
logging.level.root=warn

# 设置局部文件夹的日志级别
logging.level.com.example.demo.UserController=trace

之前的 info 级别日志就没打印了.

注意:当存在局部日志级别和全局的日志级别设置时,那么当访问局部日志时,使用的是局部日志级别.也就是 局部日志优先级 > 全局日志级别

5. 日志持久化

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

日志持久化(将日志永久的保存到磁盘的某个位置)

1:在配置文件中设置日志保存的路径,当设置了保存路劲之后,那么日志就会自动进行持久化

2:在配置文件中设置日志保存的名称,日志会自动进行持久化

#设置日志保存的目录写法一
logging.file.path=D:\\log
#设置日志保存的目录写法二
logging.file.path=D:/log

打开这个文件:

# 设置日志的保存名称
logging.file.name=D:\\log\\spring-boot.log 

6. 更简单的实现自定义日志的打印

6.1 准备工作,添加 lombok 到项目中

如果你当初没有添加 lombok 又不想重开项目,有这样一种办法,下载插件 EditStarters:

6.2 使用 @Slf4j 得到日志对象

import lombok.extern.slf4j.Slf4j;
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.ResponseBody;
@Controller
@ResponseBody
@Slf4j //替代了之前需要通过 LoggerFactory.getLogger 操作
public class UserController {
//1. 先得到日志对象(来自 slf4j)
//    private static final Logger log =
//        LoggerFactory.getLogger(UserController.class); //设置当前的类型
    @RequestMapping("/sayhi")
    public void sayHi(){
        //2. 使用日志对象提供的打印方法进行日志打印
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");
    }
}

6.3 使用 log 对象自定义打印日志

.class文件,他是给我们转换了的:

Java 程序的运⾏原理:

Lombok 的作⽤如下图所示:

6.4 lombok 更多注解说明

注解 作用
@Getter ⾃动添加 getter ⽅法
@Setter ⾃动添加 setter ⽅法
@ToString ⾃动添加 toString ⽅法
@EqualsAndHashCode ⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor ⾃动添加⽆参构造⽅法
@AllArgsConstructor ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull 属性不能为 null
@RequiredArgsConstructor ⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需

组合注解:

注解 作用
@Data @Getter + @Setter + @ToString +@EqualsAndHashCode +@RequiredArgsConstructor +@NoArgsConstructor

日志注解:

注解 作⽤
@Slf4j 添加⼀个名为 log 的⽇志,使⽤ slf4j

关于“SpringBoot日志的作用、使用、级别和持久化是什么”的内容就介绍到这,感谢各位的阅读,相信大家对SpringBoot日志的作用、使用、级别和持久化是什么已经有了进一步的了解。大家如果还想学习更多知识,欢迎关注群英网络,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: springboot
相关信息推荐
2022-09-29 17:50:00 
摘要:这篇文章主要为大家介绍了go压缩及解压zip文件的源码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-05-17 11:47:20 
摘要:本文实例为大家分享了android通过单点触摸移动图片的具体代码,供大家参考,具体内容如下编写布局资源文件先准备一张图片放入drawable内这里主要就是将图片显示出来并设置id(android:sc
2022-06-16 17:06:14 
摘要:golang调用函数的方法:使用一个map变量显式的把字符串和函数关联起来,并通过【funcs["foo"]】得到函数对象,代码为【funcs := map[string]interface{} "foo": foo】。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部