SpringBoot的日志

  • 一、了解日志
    • 1、什么是日志
    • 2、日志的作用
  • 二、自定义打印日志
    • 1、实现步骤
    • 2、日志的格式说明
  • 三、日志级别
    • 1、了解日志级别
    • 2、配置日志级别
  • 四、日志持久化
  • 五、使用lombok进行日志输出
    • 1、步骤
    • 2、lombok的原理
    • 3、关于lombok的更多注解

一、了解日志

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.logname: D:Springlogging.log     # 设置日志文件的文件名

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

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

logging:level:com:example:demo:controller: errorservice: warnfile: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

属性不能为空

勇士屠熊,绿军射鹿,夕阳西下,人群散尽,唯有烈火燎原势不可挡相关推荐

  1. 官方实力榜:绿军居首黄蜂第二 火箭小降雄鹿飙升

    官方实力榜:绿军居首黄蜂第二 火箭小降雄鹿飙升   北京时间4月8日消息,NBA官方今天公布了最新一期球队实力榜,波士顿凯尔特人队依然高居榜首,新奥尔良黄蜂队跃升至第2,洛杉矶湖人队重返前5.休斯顿火 ...

  2. 季前赛绿军垫场开门黑更有收获

    经过了休赛期漫长的等待,NBA终于又重新回到了人们的视线之中.北京时间昨天凌晨,凯尔特人在土耳其为NBA拉开了季前赛大幕.尽管尚没有进入比赛状态的凯尔特人最终以91:97不敌土耳其劲旅费内巴切,但几位 ...

  3. 发生冲突未及时离场 绿军大将被NBA罚款3.5万美元

    资料图:斯玛特在比赛中.(白色衣服) 中新网1月22日电 北京时间22日凌晨,NBA联盟官方宣布,波士顿凯尔特人队后卫马库斯-斯马特,由于在比赛过程中与对手发生冲突,而且没有及时离场,被处以3.5万美 ...

  4. 字母哥36+15稳固第一 塔图姆18中2绿军失利

    北京时间8月1日,雄鹿击败了凯尔特人,保持联盟第一的位置:马刺虽然少了大将,但仍击败国王.以下是这两场比赛的综述: 雄鹿119-凯尔特人112 雄鹿(54-12)结束停赛前的三连败,再胜一场就能锁定东 ...

  5. google velvet_LG Velvet 5G值得推出新的设计方向

    google velvet It's been a while since I've carried an LG phone that might draw stares. Over the year ...

  6. 匕首线切割图纸下载_干净匕首

    匕首线切割图纸下载 重点 (Top highlight) A pragmatic guide to dependency injection on Android 在Android上进行依赖注入的实用 ...

  7. 匕首线切割图纸下载_匕首击剑简介

    匕首线切割图纸下载 Dependency injection (DI), in a nutshell, is a technique whereby one object provides or su ...

  8. 匕首线切割图纸下载_匕首击剑:更短更轻松!

    匕首线切割图纸下载 学习Android开发 (Learning Android Development) About more than 2 years ago, I was on a quest t ...

  9. 匕首线切割图纸下载_使用Robolectric测试带有匕首注入依赖性的类

    匕首线切割图纸下载 It is common for Android code to use dependency injection (DI). And one of the tenets of D ...

最新文章

  1. 跟我一起写 Makefile(八)
  2. HBase与时空索引技术
  3. 比python好_这就是为什么Python比R更好的原因
  4. FPGA积沙成塔(目录篇)
  5. 高抗干扰低功耗LCD驱动芯片-VK2C21A/B/C/D,常用在电气类、工控类低功耗驱动上
  6. 慧之声科技-2019云呼叫时代
  7. linux命令行测试上网,如何使用linux命令行来测试网速
  8. 小白操作:zuul网关升级为getway网关,以及jwt的使用
  9. OpenCV简单图像分割
  10. GNU Radio教程 9.QPSK调制解调
  11. 论文写作基础之文献研究法与访谈法介绍
  12. 计算机专业难不难,计算机专业考研难不难
  13. 计算机主板定位孔尺寸,775针主板上四个 CPU散热器固定孔 的孔距 分别是多少...
  14. 常用的外贸英语口语汇总
  15. 爬虫项目——Scrapy爬取Boss直聘
  16. 应用-单向链表-数据结构和算法
  17. 计算机网络12.1--广域网
  18. Windows 7安装步骤
  19. 蛋糕连锁店网站管理系统(含小程序) 是海南赞赞网络公司针对甜品糕点连锁企业开发的建站系统
  20. 【小林课堂】【光学】 透镜成像规律

热门文章

  1. Hyper-V应用指南之5-导出、导入虚拟机[转]
  2. UiPath设置Excel表格自适应行高、自适应列宽或固定行高、列宽
  3. GDI+ 你使用了吗?
  4. ntdll.dll故障
  5. 倒数日怎么显示在桌面_一款非常好用而且没广告的倒数日软件,记录生活中重要的日子-APP杂货店今日推荐...
  6. 广交会直播如何在线播放PPT及视频丨汇信外贸软件
  7. 基于JavaEE移动平台的企业级房地产ERP采购系统
  8. 【HDCTF2023】wp
  9. python学习教程3-求圆的面积
  10. ViewPager 快速上手