IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 勇士屠熊,绿军射鹿,夕阳西下,人群散尽,唯有烈火燎原势不可挡 -> 正文阅读

[Java知识库]勇士屠熊,绿军射鹿,夕阳西下,人群散尽,唯有烈火燎原势不可挡

一、了解日志

1、什么是日志

程序运行过程中所产生的信息就是日志

当我们启动SpringBoot时,控制台打印的信息就是日志
在这里插入图片描述

2、日志的作用

  1. 发现和定位问题
  2. 记录用户的登录信息,进行大数据分析
  3. 记录系统的操作信息,方便数据的恢复和定位操作者
  4. 记录程序的执行时间,方便以后优化程序

二、自定义打印日志

1、实现步骤

  1. 获得日志对象
    注意:日志对象Logger 属于org.slf4j包下的,不要导错包
  2. 使用日志对象打印日志

Controller包中,设置一个LoggerController类

package com.example.demo.Controller;

@Controller
@ResponseBody
public class LoggerController {

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

    // 2. 打印日志
    @RequestMapping("/logger")
    public String logger(){
        logger.trace("日志级别: trace");
        logger.debug("日志级别: degue");
        logger.info("日志级别: info");
        logger.warn("日志级别: warn");
        logger.error("日志级别: error");
        return "logger";
    }
}

启动SpringBoot,浏览器输入localhost:8080/logger
除启动SpringBoot时,打印的日志外,还打印如下日志:
(由于SpringBoot默认日志级别是 info,因此只能打印 info 及更高级别的日志)在这里插入图片描述

2、日志的格式说明

在这里插入图片描述
3、SpringBoot内置了日志框架slf4j,采用了“门面模式”

  1. 日志门面:slf4j
  2. 日志实现:logback

关于常见的日志框架:

  1. 日志框架包括日志门面、日志实现
  2. 日志门面就相当于是装修公司,日志实现相当于是工程队(实现具体的操作),日志门面仅能对应一个日志实现

三、日志级别

1、了解日志级别

日志级别就是用来进行日志的过滤

当某个目录设置了日志级别,我们只能得到此级别及更高级别的日志

在这里插入图片描述

  1. trace:级别最低
  2. debug:需要调试时候的关键信息
  3. info:普通的打印信息
  4. warn:警告信息
  5. error:错误信息
  6. fatal:灾难级的,因为代码异常导致程序退出执行的事件;系统级别,程序猿无法打印

2、配置日志级别

(1)、在SpringBoot配置文件中配置
在这里插入图片描述

logging:
  level:
    root: warn  # 设置所有目录的日志级别
    com:
      example:
        demo:
          Controller: trace   # 设置com.example.demo.Controller目录的日志级别
          DemoApplication: info # 设置com.example.demo.DemoApplication的日志级别
  1. 同时设置全局的日志级别和指定目录的日志级别,指定目录的日志级别为前者
  2. 需要注意的是:必须从根目录(com包)开始,一步一步的到指定目录;如下设置日志级别,没用
logging:
  level:
    demo:
      Controller: trace   # 设置com.example.demo.Controller目录的日志级别

(2)、启动SpringBoot,浏览器输入localhost:8080/logger
在这里插入图片描述

四、日志持久化

日志持久化:将控制台打印的日志写到相应的目录或文件下

logging:
  file:
    path: D:\         # 设置日志文件的目录,系统自动命名 spring.log
    name: D:\Springlogging.log     # 设置日志文件的文件名

如果日志的内容过大,超过日志文件的容量,系统自动设置另一个日志文件保存

将controller包下的error级别以上的日志保存到log_all.log下,将service下warn级别以上的日志保存到log_all.log下

logging:
  level:
    com:
      example:
        demo:
          controller: error
          service: warn
  file:
    name: D:\log_all.log

五、使用lombok进行日志输出

1、步骤

  1. 添加 lombok 框架
  2. 使用 @Slf4j 注解输出日志

(1)、添加lombok框架,在创建SpringBoot项目时,引入即可

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

(2)、添加 @Slf4j 注解,使用log日志对象,即使log标红,没关系,照样运行项目

在Controller包中,创建一个LoggerSlf类,此时日志级别默认是 info

package com.example.demo.Controller;

@Controller
@ResponseBody
@Slf4j
public class LoggerSlf {

    @RequestMapping("/loggerSlf")
    public String logger(){
        log.trace("日志级别: trace");
        log.debug("日志级别: degue");
        log.info("日志级别: info");
        log.warn("日志级别: warn");
        log.error("日志级别: error");
        return "logger";
    }
}

启动SpringBoot,在浏览器输入localhost:8080/loggerSlf
在这里插入图片描述

2、lombok的原理

lombok的原理:lombok通过遵循Java编译器增强的规范,实现了Java源代码在生成字节码的时候功能的增强
@Slf4j注解的作用:IDEA编译源代码的时候,根据注解声明,在字节码文件中自动添加了一段 创建日志对象 的代码
在这里插入图片描述

对比 .java源文件 和程序运行后出现的 targe目录 下的 .class文件 ,发现 .class 文件 较 .java源文件 少了一个@Slf4j 注解,多了一段创建名为 log 的日志对象 的代码
在这里插入图片描述

3、关于lombok的更多注解

@Data@Getter + @Setter + @ToString + @EqualsAndHashCode + @NoArgsConstructor + @RequiredArgsConstructor
@Getter自动添加getter方法
@Setter自动添加setter方法
@ToString自动添加toString方法
@EqualsAndHashCode自动添加equals和hashCode方法
@NoArgsConstructor自动添加无参构造方法
@AllArgsConstructor自动添加全属性的构造方法,顺序按照属性定义的顺序
@RequiredArgsConstructor自动添加 必需属性的构造方法,final+@NonNull的属性为必需
@NonNull属性不能为空

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:28:59  更:2022-05-18 17:29:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:03:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码