Lesson6:SpringBoot日志文件

目录

一、日志的作用

二、日志的使用方法

三、自定义日志打印

3.1 在程序中得到日志对象

3.2 使用日志对象打印日志

​3.3 日志格式说明

​3.4 常见的日志框架说明

四、日志级别

4.1 日志分级的作用

4.2 日志级别的分类

4.3 日志使用

五、日志持久化

5.1 设置日志的保存路径和文件名

六、更简单的日志输出

6.1 添加依赖,输出日志

6.2 Lombok原理解释

6.3  Lombok更多注解

七、总结


一、日志的作用

日志是程序的重要组成部分。如果程序报错了,打开控制台查看日志可以帮我们快速的排除和定位问题。除此之外,日志还有以下功能:

记录用户登录信息,方便进行大数据分析,分析用户是正常登录还是恶意破解用户。

记录系统的操作日志,方便数据恢复和定位操作人。

记录程序的执行时间,方便为以后优化程序提高数据支持。

二、日志的使用方法

SpringBoot项目在启动的时候默认就有日志输出。

从上图我们可以看到,SpringBoot内置了日志框架,否则也打印不了日志。默认情况下,输出的日志并非是开发者定义和打印的。同时,日志是默认打印在控制台上的。而控制台的日志是不能被保存的。接下来,将会介绍如何自定义打印日志和保存日志。

三、自定义日志打印

3.1 在程序中得到日志对象

使用LoggerFactory日志工厂来获取日志对象。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static Logger logger = LoggerFactory.getLogger(UserController.class);

日志工厂需要将类的类型传递进去,这样才知道日志的归属类,才能更方便直观的定位到出问题的类。

注意:Logger对象是属于org.slf4j包下的。

3.2 使用日志对象打印日志

打印方式有多种,可以使用info()方法来输出日志。

 3.3 日志格式说明

3.4 常见的日志框架说明

日志实现方式:门面模式

门面:slf4j

实现:logback

四、日志级别

4.1 日志分级的作用

日志分级的作用就是为了筛选符合目标的日志信息。有了日志级别以后,就可以过滤自己想看到的信息。举个例子:如果设置日志级别为error,就可以只看程序的报错日志,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者的信息筛选时间。

4.2 日志级别的分类

trace:微量,少许。级别最低。

info:普通的打印信息。

debug:需要调试的时候打印关键信息

warn:警告,不影响使用,但需要注意的问题。

error:错误信息,级别较高的错误日志信息。

fatal:致命的。因为代码异常导致程序退出执行的事件。这个程序员没办法控制。

4.3 日志使用

日志级别控制只需要在配置文件中设置“logging.level”配置项即可。

配置根路径的日志级别:

logging:
  level:
    root: trace #设置所有目录的日志级别

配置特定目录的日志级别:

logging:
  level:
    root: info #设置所有目录的日志级别
    com: 
      example:
        controller: trace #设置com.example.controller的日志级别
        component: error #设置com.example.componet的日志级别

打印日志:

    private static Logger logger = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/logger")
    public void showLoggerLevel(){
        logger.trace("--------------trace------------");
        logger.debug("--------------debug------------");
        logger.info("----------------info------------");
        logger.warn("----------------warn------------");
        logger.error("---------------error-----------");
    }

不同的日志级别下打印的结果不一样。

如果日志的等级比设置的等级低,那么该日志就会被筛掉。只会输出大于等于当前设置等级的日志。(可以理解为:只有特别严重的事情才会汇报给公司的最高领导) 

五、日志持久化

5.1 设置日志的保存路径和文件名

logging:
  level:
    root: info #设置所有目录的日志级别
  file:
    path: C:\Users\LIUJIA\Desktop\JAVA # 设置保存日志的路径
    name: C:\Users\LIUJIA\Desktop\JAVA\logging.log #设置日志的名称

六、更简单的日志输出

自定义日志打印时,我们需要使用LoggerFactory日志工厂来获取日志对象,并且每个类都需要添加一遍,很麻烦。可以使用lombok完成更简单的输出。

分为两步:

添加Lombok依赖、使用@Slf4j注解输出日志

6.1 添加依赖,输出日志

使用@Slf4j注解,在程序中使用log对象即可输出日志,并且只能使用log对象才能输出,这是lombok提供的对象名。

@Controller
@ResponseBody
@Slf4j
public class UserController {
    @RequestMapping("/deflogger")
    public void defLogger(){
        log.error("-------error-------");
    }
}

6.2 Lombok原理解释

Java程序的运行原理如下图:

用户写的代码在src-main-java这个文件夹下,经过编译后,生成字节码文件,生成的字节码文件在target目录下,target目录下的文件结构和java中的文件是一一对应的。通过查看字节码文件,

我们发现有使用LoggerFactory日志工厂来获取日志对象的代码,证明加了@Slf4j注解后,Lombok通过遵循Java编译期增强的规范,实现了看Java源代码在生成字节码时的功能增强,即Lombok实现了这行代码,不需要程序员自己写了。

6.3  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

七、总结

日志可以帮助我们更快的定位和发现问题,Spring Boot内置了日志框架,默认情况下使用的是info日志级别将日志输出到控制台的,我们可以使用Lombok提供的@Slf4j注解和log对象快速的打印自定义日志。同时,日志包含trace、info、debug、warn、error、fatal6个级别。日志级别越高,收到的日志信息越少。可以通过设置日志的保存路径和文件名实现日志持久化存储。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘减减

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值