【Spring日志】

一.日志作用

1.定位和发现问题

这是日志的主要用途,通过查看日志,我们可以定位问题发生的位置,从而快速的发现问题,分析问题.

2.系统监控

监控几乎是一个成熟系统的标配,我们可以通过日志记录这个系统的运行状态,比如记录方法的响应时间,响应状态,通过设置不同的规则,超过阈值就进行报警.

3.数据采集

采集的数据可以作用在很多方面,比如数据统计,推荐排序.

  • 数据统计:统计页面的浏览量,访客量,点击量
  • 推荐排序:购物/广告/新闻等都设计到推荐排序,数据采集是推荐排序中必须要做的.

4.日志审计

安全审计是系统安全中非常重要的一部分. 通过系统日志分析,可以判断一些非法攻击/非法调用.

二.日志的使用

Spring Boot项目在启动的时候默认就有日志输出:

这个日志格式是这样的:

它比我们通过System.out.print打印的日志多了很多信息.

那我们怎么打印自己写的日志呢?

SpringBoot内置了日志框架Slf4j,我们可以在程序中调用Slf4j来输出日志.

三.日志框架

Slf4j不同于其他的日志框架,它不是一个真正的日志实现,而是一个对日志框架制定的一种规范,标准,接口. 所以Slf4j并不能独立使用,需要和具体的日志框架配合使用.


门面模式/外观模式

门面模式,提供了一个统一的接口,用来访问子系统中的一组接口,其主要特征是定义了⼀个⾼层接⼝, 让⼦系统更容易使⽤.

Slf4j是门面模式的典型应用

门面模式的优点

1.减少了系统的相互依赖,实现了客户端和子系统的耦合关系

2.提高了灵活性,简化了客户端对子系统的使用难度

3.提高安全性.灵活设方法的定访问权限

四.SLF4J日志框架

Slf4j就相当于是其他日志框架的门面,可以理解为是提供⽇志服务的统⼀API接⼝

为什么要引入日志门面?

常见的日志框架有 log4j , logback , 一个程序常常需要不同的日志框架, 而不同的日志框架的API和配置文件不同, 如果多个日志框架共存,就要维护多套配置文件,而且如果更换日志框架,还必须修改代码 , 这个过程很容易产生冲突 .

而如果引入日志门面,应⽤程序和⽇志框架(框架的具体实现)之间有了统⼀的API接⼝(⻔⾯⽇志框架 实现), 此时应⽤程序只需要维护⼀套⽇志⽂件配置, 且当底层实现框架改变时, 也不需要更改应⽤程序代码.

Slf4j就是这个日志门面.

所以Slf4j不是一个真实的日志框架实现,是一个日志框架门面 , 具体实现是log4j/log4j/logback/jul 

门面模式只是slf4j使用的一种设计模式 , 还有其他的设计模式.

打印⽇志的步骤

1. 在程序中得到⽇志对象.

在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory

2.使⽤⽇志对象输出要打印的内容

⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志

日志格式

日志级别

⽇志级别代表着⽇志信息对应问题的严重性, 为了更快的筛选符合⽬标的⽇志信息.

⽇志的级别从⾼到低依次为 : FATAL、ERROR、WARN、INFO、DEBUG、TRACE

级别越⾼, 收到的消息越少

• FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误.

• ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏.

• WARN: 警告信息, 不影响使⽤, 但需要注意的问题

• INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息, 例如系统启动完成、请求处理完成等.

• DEBUG: 调试信息, 需要调试时候的关键信息打印.

• TRACE: 追踪信息, ⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)

⽇志级别的使⽤

⽇志级别是开发⼈员⾃⼰设置的. 开发⼈员根据⾃⼰的理解来判断该信息的重要程度,类似公司管理, 通常由领导来判断什么样的事情需要汇报, 什么样的事情不需要汇报.

针对这些级别, Logger 对象分别提供了对应的⽅法, 来输出⽇志

日志对象名

通常使用源代码的类名 , 也可以自定义.

这里写了五种不同级别的日志信息

然而发现只打印了三条日志信息,debug和trace类型的并未打印.

这是由于日志的输出级别默认是info级别,所以只会打印⼤于等于此级别的⽇志, 也就 是info, warn和error.

配置成debug模式后

debug日志可以打印; 但是trace优先级比debug低,不能打印.

日志配置

这里以配置properties文件为例.

1设置日志的级别

logging.level.root: debug

配置根目录下所有文件日志的级别

logging.level.包路径 :debug

配置某个包下文件日志的级别

2设置颜色(idea)

 第一步:打开Edit Configuration

第二步:添加这串

  • -Dspring.output.ansi.enabled=ALWAYS

3日志持久化

数据保存在数据库中,是一种持久化的方式

日志保存在文件中,也是一种持久化的方式

这里是日志保存在文件中,有两种⽅式

1. 配置⽇志⽂件名

2. 配置⽇志的存储⽬录

logging.file.name

可以是相对路径,也可以是绝对路径. 可以是路径+文件名/ 单独一个文件名(以当前目录作为基准目录)

logging.file.path

只能是目录 比如var/log

注意: logging.file.name 和 logging.file.path 两个都配置的情况下, 只⽣效其⼀, 以 logging.file.name 为准.

比如将日志文件保存到aaa.log

4日志分割

修改日志格式

logging.pattern.console

修改控制台的日志格式

logging.pattern.file

修饰文件的日志格式

日志的简单写法

使用注解@Slf4j的方式

配置项

说明

默认值

logging.logback.rollingpolicy.fil e-name-pattern

⽇志分割后的⽂件名 格式

${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz

logging.logback.rollingpolicy.m ax-file-size

⽇志⽂件超过这个⼤ ⼩就⾃动分割

 10MB

   

5配置⽇志格式

打印⽇志的格式, 也是⽀持配置的. ⽀持控制台和⽇志⽂件分别设置

配置项

说明

默认值

logging.pattern.console

控制台⽇ 志格式

%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MMdd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:- %5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]) {faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

logging.pattern.file

⽇志⽂件 的⽇志格 式

%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MMdd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

注意需要简单配置一下, 让idea⽀持控制台颜⾊显⽰,参考第二点.

更简单的⽇志输出

由于每个类都要使用LoggerFactory获取日志对象,lombok给我们提供了 ⼀种更简单的⽅式.

1. 添加 lombok 框架⽀持

2. 使⽤ @slf4j 注解输出⽇志。

@slf4j会提供一个日志对象log,直接使用就可以 .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/229671.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

NetCat(NC)详细教程

一.NetCat介绍 1995年第一个版本公布,NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end)工具,能被其它的程序程序或脚本直接地或容易地驱动。同时,它又是一个…

初探HarmonyOS路由跳转

最近的鸿蒙新闻也是很大声势,鸿蒙的纯血版一出,各大互联网大厂都坐不住了,纷纷加入其中。这意味鸿蒙将来会取代大部分Android用户,这也是程序员的一篇大好前程。如今的Android开发行业已经夕阳西下了。 网上有关HarmonyOS的资料几…

docker-compose Foxmic dt版

Foxmic dt 版前言 实现企业对资产的基本管理,包含对资产的登记、维修、调拨、转移等基本功能的支持,并提供对资产的耗材、库存进行管理,有完善的组织架构,非常适合中小企业的需求系统整体覆盖了基本的资产管理、合同管理、运维服务、运维服务、数据中心设备管理等多个模块。…

神经内镜市场分析:全球市场规模及市场份额、行业现状、市场发展

神经内镜是一种用于检查和执行中枢神经系统各种干预措施的内窥镜,也是内镜神经外科手术中进行观察和操作的工具。神经内镜手术具有高清晰视野、抵近观察的优越特性,同时由于其对正常脑组织结构造成的损伤小,并发症发生率较低,且治…

开发定制化抖音票务小程序的技术解析

通过定制化抖音票务小程序,可以为用户提供更加个性化的活动体验,同时也为企业和品牌提供了更多的营销机会。 一、小程序开发框架的选择 在开发定制化抖音票务小程序之前,选择合适的小程序开发框架至关重要。目前,主流的小程序框…

算法基础-快速幂 | 蓝桥杯

⭐简单说两句⭐ 作者:后端小知识,CSDN后端领域新星创作者|阿里云专家博主 CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 好的&#xff0…

2020年10月20日 Go生态洞察:Go开发者调查报告分析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

ringboot-cve_2021_21234:latestSpring Boot 目录遍历 (CVE-2021-21234)漏洞复现

Spring Boot 目录遍历 (CVE-2021-21234)漏洞复现 Spring-boot-actuator-logview 0.2.13之前版本存在路径遍历漏洞,攻击者可通过该缺陷读取系统任意文件。 名称: Spring Boot 目录遍历 (CVE-2021-21234) 描述: Sprin…

数据结构之二叉树与堆以及力扣刷题函数扩展

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力 目录 1.前言 2.树 2.1概念 2.2树的相关概念 3.…

微信小程序本地和真机调试文件上传成功但体验版不成功

可能是微信小程序ip白名单的问题,去微信公众平台(小程序)上设置小程序的ip白名单 1、在本地中取消不校验 然后在本地去上传文件,就会发现控制台报错了,会提示一个https什么不在ip白名单,复制那个网址 2、…

Spring Boot实现热部署

Spring Boot提供了一个名为spring-boot-devtools的开发工具,它可以实现热部署功能。通过使用spring-boot-devtools,可以在修改了resources目录下的内容后,自动重新加载应用程序,而无需手动重启。 以下是使用spring-boot-devtools…