用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

   -  云代码空间

——

SpringBoot深入了解日志的使用

2022-08-17|223阅||

摘要:1. 日志的作用日志是程序的重要组成部分,在程序报错的时候,如果我们不看日志,是很难排查出错误的,除非你真的是很有经验.所以日志最主要的作用就是排除和定位问题.日志提供的功能:记录⽤户登录⽇志,⽅便分

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 更多注解说明

组合注解:

日志注解:

到此这篇关于springboot深入了解日志的使用的文章就介绍到这了




顶 1踩 1收藏
文章评论
    发表评论

    个人资料

    • 昵称: 义
    • 等级: 中级程序员
    • 积分: 160
    • 代码: 0 个
    • 文章: 2 篇
    • 随想: 0 条
    • 访问: 0 次
    • 关注

    人气代码

      标签

      最新提问

        站长推荐