SpringBoot 日志文件

2023-05-16

  • 1. 日志的作用
  • 2. 日志怎么用
  • 3. 自定义日志打印
    • 3.1 得到日志对象
    • 3.2 使用日志对象提供的方法打印日志
    • 3.3 日志格式说明
  • 4. 日志级别
    • 4.1 日志级别分类
    • 4.2 日志级别的配置
  • 5. 日志持久化
  • 6. 更简单的实现自定义日志的打印
    • 6.1 准备工作,添加 lombok 到项目中
    • 6.2 使用 @Slf4j 得到日志对象
    • 6.3 使用 log 对象自定义打印日志
    • 6.4 lombok 更多注解说明

1. 日志的作用

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

日志提供的功能:

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

2. 日志怎么用

在我们启动 SpringBoot 项目的时候就会输出日志:
在这里插入图片描述

3. 自定义日志打印

主要分两个步骤:

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

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 日志级别分类

日志级别分为:

  1. trace: 微量,少许的意思(级别最低)
  2. debug: 调试日志
  3. info: 普通信息日志
  4. warn: 警告日志
  5. error: 错误日志
  6. 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 更多注解说明

注解作用
@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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot 日志文件 的相关文章

随机推荐

  • 2022年编程语言热度排行榜来啦,快来看看你学习的语言排第几

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 前言 一直以来 xff0c 编程语言都是程序员非常关注的话题 年末将至 xff0c 是否会有程序员发出疑问 2022 年行业需求最大的编程
  • LibEvent-Demo

    libevent test cpp 定义控制台应用程序的入口点 include 34 stdafx h 34 pragma comment lib 34 ws2 32 lib 34 pragma comment lib 34 wsock32
  • 【数据挖掘】DBSCAN聚类算法(python实现)

    一 python代码 39 39 39 Author Vici date 2020 5 14 39 39 39 import math 39 39 39 Point类 xff0c 记录坐标x xff0c y和点的名字id 39 39 39
  • ubuntu中安装rpm格式的软件包

    ubuntu的软件包格式是deb xff0c 如果要安装rpm的包 xff0c 则要先用alien把rpm转换成deb zhhLinux联盟 sudo apt get install alien alien默认没有安装 xff0c 所以首先
  • SQLite3在windows下的配置(链接VC++或者VS)

    一 SQLite3 简介 SQLite3 是一个开源免费的嵌入式关系数据库 xff0c 它在 2000 年由 D Richard Hipp 发布 xff0c 它不像大型数据库管理系统 xff0c 占用系统大量资源 SQLite3 是用 C
  • 电脑正常联网,提示无法登录微信

    事故起因 xff1a 因为工作需要安装一款软件 xff0c 安装途中提示有风险直接忽略了该风险 后期卸掉该软件 xff0c 然后无法登录微信 QQ easyconnect等软件 xff0c 但是浏览器可以正常访问 登录微信出现的界面是 xf
  • Ubuntu-GNOME 16.04 LTS更换主题

    1 安装gnome shell扩展插件 进入https extensions gnome org 先将gnome安装插件安装到火狐浏览器上 xff0c 而后查找插件 User Themes by fmuellner 如果无法选择比如题头报错
  • 图片服务器搭建 ftp上传http协议读取图片

    怎样在Win7系统中搭建Web服务器 详见百度搭建教程web服务器搭建 web服务器搭建 搭建好服务器以后配置 controller层 span class hljs javadoc 上传头像 span span class hljs an
  • SVM&TSVM&LSA(I)→PLSA(I)→LDA→HDP

    SVM amp TSVM amp LSA I PLSA I LDA HDP SVM xff08 用于监督学习 xff09 参考文章 xff1a SVM xff08 支持向量机 xff09 详解 通俗来讲 xff0c SVM是一种二类分类模型
  • adb源码分析

    ADB是Android debug bridge的缩写 xff0c 它使用PC机可以通过USB或网络与android设备通讯 adb的源码位于system core adb目录下 xff0c 先来看下编译脚本Android mk xff1a
  • android源码编译笔记--踩坑

    错误 xff1a ninja build stopped subcommand failed 解决 xff1a 打开 prebuilts sdk tools jack admin 找到 JACK SERVER COMMAND 61 34 j
  • 这个交互也太炸裂了趴

    动画是为一个app创造出色用户体验的重要组成部分 它的关键挑战是向用户解释应用程序的逻辑 xff0c 但是常见的错误是鲁莽地使用动画 xff0c 从而否定了改善用户体验的整个观点 为了使应用出色而不仅仅是出色或平庸 xff0c 动画必须正确
  • 在ES6的语法中如何给数组去重

    这是从数组中筛选出重复项并仅返回唯一值的三种方法 我最喜欢使用Set xff0c 因为它最短 xff0c 最简单 xff1b set Set是ES6中引入的新数据对象 因为Set仅允许您存储唯一值 传递数组时 xff0c 它将删除所有重复值
  • 笔记啊啊啊啊

    判断某个字符串中是否其他某些字符串 span class token keyword const span deviceName span class token operator 61 span e span class token pu
  • android 高德地图之poi搜索功能的实现

    二话不多说 先看效果 这个功能我是用Fragmentdialog里面做的 也遇到不少坑 第一 就是设置背景的drawable为纯白色导致键盘弹出的时候 recyclerview的布局被顶上去导致出现白色布局 有点扎眼 最后改成了设置为和背景
  • android之 h5调用系统相机和相册并显示

    先上html界面的代码 放在assets里面就可以了 我也不太会html 所以随便写了点 span class hljs doctype lt doctype html gt span span class hljs tag lt span
  • 深坑之Webview,解决H5调用android相机拍照和录像

    最近在开发过程中遇到一个问题 主要是调用第三方的实名认证 需要拍照和录像 办过支付宝大宝卡和腾讯的大王卡的都知道这玩意 办卡的时候就需要进行实名认证 人脸识别 本来第三方平台 xxx流量公司 说的是直接用WebView加载这个H5界面就完事
  • rxjava2定时器每秒请求一次数据

    项目进行的过程中有个需求是在20秒内每秒请求一次数据 xff0c 请求成功的json中有个字段 xff0c 如果有这个字段代表请求成功 xff0c 如果没有则继续请求 xff0c 直到20秒结束 xff0c 20秒结束则失败 本来最开始采用
  • Flutter导航栏实现

    学了几天的flutter 似乎有点感觉了 今天来上手搞一个导航栏 实现类似android里面的ViewPager 43 Fragment的效果 二话不说直接上代码 import 39 package flutter material dar
  • SpringBoot 日志文件

    1 日志的作用2 日志怎么用3 自定义日志打印3 1 得到日志对象3 2 使用日志对象提供的方法打印日志3 3 日志格式说明 4 日志级别4 1 日志级别分类4 2 日志级别的配置 5 日志持久化6 更简单的实现自定义日志的打印6 1 准备