快捷搜索:  汽车  科技

spring boot日志分类(SpringBoot日志文件)

spring boot日志分类(SpringBoot日志文件)日志级别分为:就像是如果你是一家 2 万人的公司的老板 需要每天看他们的反馈信息 难道每个人都看吗?这显然看不完 你只需要看一些领头的就行…得到日志对象 Logger 它来自于 slf4j 不要导错了包 在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactoryimport 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

1. 日志的作用

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

日志提供的功能:

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

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

spring boot日志分类(SpringBoot日志文件)(1)

3. 自定义日志打印

主要分两个步骤:

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

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

spring boot日志分类(SpringBoot日志文件)(2)

spring boot日志分类(SpringBoot日志文件)(3)

spring boot日志分类(SpringBoot日志文件)(4)

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"); } }

spring boot日志分类(SpringBoot日志文件)(5)

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

3.3 日志格式说明

spring boot日志分类(SpringBoot日志文件)(6)

4. 日志级别

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

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

4.1 日志级别分类

日志级别分为:

trace debug info warn error fatal

日志级别的顺序:

spring boot日志分类(SpringBoot日志文件)(7)

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

4.2 日志级别的配置

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

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

spring boot日志分类(SpringBoot日志文件)(8)

spring boot日志分类(SpringBoot日志文件)(9)

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

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

5. 日志持久化

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

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

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

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

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

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

spring boot日志分类(SpringBoot日志文件)(10)

spring boot日志分类(SpringBoot日志文件)(11)

打开这个文件:

spring boot日志分类(SpringBoot日志文件)(12)

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

spring boot日志分类(SpringBoot日志文件)(13)

spring boot日志分类(SpringBoot日志文件)(14)

spring boot日志分类(SpringBoot日志文件)(15)

6. 更简单的实现自定义日志的打印6.1 准备工作 添加 lombok 到项目中

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

spring boot日志分类(SpringBoot日志文件)(16)

spring boot日志分类(SpringBoot日志文件)(17)

spring boot日志分类(SpringBoot日志文件)(18)

spring boot日志分类(SpringBoot日志文件)(19)

spring boot日志分类(SpringBoot日志文件)(20)

spring boot日志分类(SpringBoot日志文件)(21)

spring boot日志分类(SpringBoot日志文件)(22)

6.2 使用 @Slf4j 得到日志对象

spring boot日志分类(SpringBoot日志文件)(23)

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 对象自定义打印日志

spring boot日志分类(SpringBoot日志文件)(24)

spring boot日志分类(SpringBoot日志文件)(25)

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

spring boot日志分类(SpringBoot日志文件)(26)

Java 程序的运⾏原理:

spring boot日志分类(SpringBoot日志文件)(27)

Lombok 的作⽤如下图所示:

spring boot日志分类(SpringBoot日志文件)(28)

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

猜您喜欢: