JavaEE【Spring】:SpringBoot 日志文件

一、日志概念

日志就是用来发现和定位问题的。

Spring Boot 项⽬在启动的时候默认就有日志输出,如下:
在这里插入图片描述

二、自定义日志打印

⾃定义打印⽇志的步骤:

  • 获取⽇志对象。
  • 打印内容。

1、在程序中得到日志对象

因为 Spring Boot 中内置了⽇志框架 Slf4j,所以咱们可以直接在程序中调⽤ slf4j 来输出⽇志。

    // 1.得到日志对象
    private static Logger logger =
            LoggerFactory.getLogger(TestController.class);

注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包,否则会报错。

常见的日志框架:
在这里插入图片描述

2、使用日志对象打印日志

@RestController
public class TestController {
    
    

    // 1.得到日志对象
    private static Logger logger =
            LoggerFactory.getLogger(TestController.class);

    @RequestMapping("/hikey")
    public String HiKey() {
    
    
    	// 2.打印⽇志
        logger.info("Hi,Spring Boot Logger!");
    }
}

运行结果为:
在这里插入图片描述

3、日志格式

在这里插入图片描述

三、日志持久化

日志持久化的方式:

  • 设置日志的名称
  • 设置日志的保存路径

1、设置日志的名称

# 设置⽇志⽂件的名称
logging:
  file:
    name: springboot.log

运行结果为:
在这里插入图片描述
特性:

  • 日志不会丢失,会一直追加
  • 当日志较大时,会自动分割

2、设置日志的保存路径

# 设置⽇志⽂件的⽬录
logging:
  file:
    path: D:\work\

运行结果为:
在这里插入图片描述

四、日志级别

1、作用

日志的级别就是用来筛选日志的。

有了⽇志级别之后就可以过滤⾃⼰想看到的信息了,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了。

2、分类

日志的级别有:

  • trace:微量,少许的意思,级别最低;
  • debug:调试,需要调试时候的关键信息打印;
  • info:普通,普通打印信息;
  • warn:警告,不影响使⽤,但需要注意的问题;
  • error:错误,级别较⾼的错误⽇志信息;
  • fatal:致命的,因为代码异常导致程序退出执⾏的事件。

其级别顺序为:
在这里插入图片描述

注意:虽然有 fatal 这个级别,但是我们并没有办法去使用这个级别的日志。

3、使用

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

# 日志级别设置
logging:
  level:
  	# spring 的日志
    root: info
    # 自定义路径
    com:
      example:
        springbootdemo: debug

测试类:

@RestController
public class TestController {
    
    

    // 1.得到日志对象
    private static Logger logger =
            LoggerFactory.getLogger(TestController.class);

    @RequestMapping("/hikey")
    public String HiKey() {
    
    
        // 2.打印日志
        logger.trace("Hi,i am trace.");
        logger.debug("Hi,i am debug.");
        logger.info("Hi,i am info.");
        logger.warn("Hi,i am warn.");
        logger.error("Hi,i am error.");
        return myList.getName().toString();
    }
}

运行结果为:
在这里插入图片描述

五、更简单的日志输出—lombok

刚刚我们学习了自定义日志打印,但如果我们想在多个类中打印日志,每次都要使用一次 LoggerFactory.getLogger(xxx.class),这样就会非常的麻烦,lombok 就可以解决这个问题。

1、添加 lombok 依赖

我们要先增加 lombok 依赖。

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.20</version>
			<optional>true</optional>
		</dependency>

① EditStarters

这里分享一个小插件,用来添加依赖的。

File -> Settings -> Plugins
在这里插入图片描述
在 pom.xml 中,右键 -> Generate -> EditStarters
在这里插入图片描述

2、输出日志

使用 @Slf4j 注解,使用 log 对象,即可输入日志,代码如下:

@RestController
@Slf4j
public class StudentController {
    
    

    @RequestMapping("/sayhello")
    public String sayHello(){
    
    
        // 2.使用日志对象,打印日志
        log.info("Hi,i am info.");
        return "Hi,Spring Boot Logger!";
    }
}

运行结果为:
在这里插入图片描述

3、lombok 原理解释

target 为项⽬最终执⾏的代码,我们查看 target ⽬录就可以知道 lombok 的原理:
在这里插入图片描述
通过对比,我们可以发现在字节码文件中, @slf4j 注解消失了,而多出来了一行代码,正是我们之前觉得麻烦的代码。

所以 lombok 其实就是在 .java 文件转化为 .class 文件之前,将注解变为代码插入到 .java 文件中。如图:
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/WZRbeliever/article/details/128279382