Spring日志
1.日志的作用
- 定位和发现问题(主要)
- 系统监控
- 数据采集
- 日志审计......
2.日志的使用
2.1 ⽇志格式的说明

2.2 打印日志
Spring集成了日志框架,直接使用即可
步骤:
1.定义日志对象
2.使⽤⽇志对象打印⽇志
@RestController
public class LoggerController {private static Logger logger = LoggerFactory.getLogger(LoggerController.class);//(类名/类名.class)//从日志工厂拿到对象@PostConstructpublic void print(){System.out.println("打印日志");}
}
这里要注意几点:
(Logger是 org.slf4j 包下的)

2.3 ⽇志框架介绍

SLF4J不同于其他⽇志框架, 它不是⼀个真正的⽇志实现,而是一个抽象层.
是对⽇志框架制定的⼀种规范, 标准,接⼝.
所有SLF4J并不能独⽴使⽤,需要和具体的⽇志框架配合使⽤
2.2.1 ⻔⾯模式(外观模式)
2.2.1.1 解释
SLF4J是⻔⾯模式的典型应⽤
⻔⾯模式(外观模式), 提供了⼀个统⼀的接⼝, ⽤来访问⼦系统中的⼀群接⼝. 其主要特征是定义了⼀个⾼层接⼝, 让⼦系统更容易使⽤.
这里并不关心子系统的实现,只关心SLF4J(解耦)

⽐如去医院看病,可能要去挂号, ⻔诊, 化验, 取药, 让患者或患者家属觉得很复杂, 如果有提供接待⼈员, 只让接待⼈员来处理, 就很⽅便.
2.2.1.2 实现
场景实现:
当我们回家后, 我们会开各个屋的灯. 离开家时, 我们会关闭各个屋的灯,这就会很麻烦.
而如果家⾥设置⼀个总开关, 来控制整个屋的灯就会很⽅便.
public interface Light {void on();void off();
}public class DiningLight implements Light{@Overridepublic void on() {System.out.println("打开餐厅灯");}@Overridepublic void off() {System.out.println("关闭餐厅灯");}
}public class HallLight implements Light{@Overridepublic void on() {System.out.println("打开走廊灯");}@Overridepublic void off() {System.out.println("关闭走廊灯");}
}public class LivingLight implements Light{@Overridepublic void on() {System.out.println("打开客厅灯");}@Overridepublic void off() {System.out.println("关闭客厅灯");}
}//对这些进行封装
//门面
public class FacadePattern {public void lightOn(){HallLight hallLight = new HallLight();hallLight.on();LivingLight livingLight = new LivingLight();livingLight.on();DiningLight diningLight = new DiningLight();diningLight.on();}
}public class Main {public static void main(String[] args) {FacadePattern facadePattern = new FacadePattern();facadePattern.lightOn();}
}

2.2.1.3 优点
- 减少了系统的相互依赖.
- 实现了客⼾端与⼦系统的耦合关系, 这使得⼦系统的变化不会影响到调⽤它的客⼾端.
2.2.2 SLF4J 框架介绍
SLF4J 就是其他⽇志框架的⻔⾯
SLF4J可以理解为是提供⽇志服务的统⼀API接⼝,并不涉及到具体的⽇志逻辑实现
①不引入日志门面:
常⻅的⽇志框架有log4J,logback等.如果⼀个项⽬已经使⽤了log4j,⽽你依赖的另⼀个类库,假如是ApacheActive MQ,它依赖于另外⼀个⽇志框架logback,那么你就需要把logback也加载进去.

存在问题:
1. 不同⽇志框架的API接⼝和配置⽂件不同, 如果多个⽇志框架共存, 那么不得不维护多套配置⽂件(这个配置⽂件是指⽤⼾⾃定义的配置⽂件).
2. 如果要更换⽇志框架, 应⽤程序将不得不修改代码, 并且修改过程中可能会存在⼀些代码冲突.
3. 如果引⼊的第三⽅框架, 使⽤了多套, 那就不得不维护多套配置.
SLF4J使代码独⽴于任意⼀个特定的⽇志API,这是⼀个对于开发API的开发者很好的思想.
②引入日志门面
引⼊⻔⾯⽇志框架之后,应⽤程序和⽇志框架(框架的具体实现)之间有了统⼀的API接⼝(⻔⾯⽇志框架实现),此时应⽤程序只需要维护⼀套⽇志⽂件配置,且当底层实现框架改变时,也不需要更改应⽤程序代码.

SLF4J 就是这个⽇志⻔⾯
2.4 ⽇志级别
2.4.1 ⽇志级别的分类
| 级别(从高到低) | 解释(级别越⾼, 收到的消息越少) |
| FATAL | 致命信息,表⽰需要⽴即被处理的系统级错误 |
| ERROR | 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏ |
| WARN | 警告信息, 不影响使⽤, 但需要注意的问题 |
| INFO | 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息, 例如系统启动完成、请求处理完成等 |
| DEBUG | 调试信息, 需要调试时候的关键信息打印 |
| TRACE | 追踪信息, ⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代) |
2.4.2 ⽇志级别的使⽤
@RestController
public class LoggerController {private static Logger logger = LoggerFactory.getLogger(LoggerController.class);@PostConstructpublic void print(){System.out.println("打印日志");logger.info("============我是日志框架打印的日志==============");logger.error("我是error日志");logger.warn("我是warn日志");logger.info("我是info日志");logger.debug("我是debug日志");logger.trace("我是trace日志");}
}
可以看出,这里打印了error,warn,info,而没有打印debug和trace,
这是因为Spring默认的日志级别是info,所以只会打印⼤于等于此级别的⽇志,即info,warn,error.
2.5 ⽇志配置
2.5.1 配置⽇志级别
logging:level:root: debug
此时就可以打印debug级别的日志了:
debug会打印较多日志,影响观察,可以对日志进行分目录打印
比如Spring的日志只打印info,项目日志打印debug级别(root表示根目录)

此时日志就少了:

日志也可以设置颜色(只能设置控制台的颜色):

2.5.2 ⽇志持久化
日志持久化就是把日志保存在文件中

2.5.2.1 配置⽇志⽂件的路径和⽂件名


2.5.2.2 配置⽇志⽂件的保存路径


这种⽅式只能设置⽇志的路径, ⽂件名为固定的spring.log
2.5.2.3 比较总结


- name既可以设置路径,又可以设置名称
- path只能设置路径,默认名称是spring.log
- 如果没有加路径,默认放在当前项目下
- 如果两者同时存在,path就失效了,name的优先级要高于path
2.5.3 配置⽇志⽂件分割
- 当然不是说,只要达到1KB就立即进行分割的,是以行来进行的,不是以字符.
- 分割后的⽇志⽂件名为:⽇志名.⽇期.索引
2.5.4 配置⽇志格式(了解)

3. 更简单的⽇志输出
因为每次都使⽤ LoggerFactory.getLogger(xxx.class) 很繁琐, 并且需要每个类都添加⼀遍, 而lombok给我们提供了 ⼀种更简单的⽅式:
使⽤ @slf4j 注解输出⽇志
@Slf4j
@RestController
public class LoggerController {//private static Logger logger = LoggerFactory.getLogger(LoggerController.class);@PostConstructpublic void print(){System.out.println("打印日志");log.info("============我是日志框架打印的日志==============");log.error("我是error日志");log.warn("我是warn日志");log.info("我是info日志");log.debug("我是debug日志");log.trace("我是trace日志");}
}
相关文章:
Spring日志
1.日志的作用 定位和发现问题(主要)系统监控数据采集日志审计...... 2.日志的使用 2.1 ⽇志格式的说明 2.2 打印日志 Spring集成了日志框架,直接使用即可 步骤: 1.定义日志对象 2.使⽤⽇志对象打印⽇志 RestController public class LoggerController {private static Logger…...
年薪30万+,TOP大厂月薪10万+....网络安全工程师凭什么?
时代飞速发展,我们的工作、生活乃至整个社会的运转都越来越依赖于网络。也因此,网络的无处不在带来了前所未有的安全风险。 从个人隐私泄露到企业机密被盗,再到国家关键基础设施遭受攻击,网络安全问题无处不在,威胁着…...
WebView 的常见的安全漏洞:
WebView 可能存在以下一些常见的安全漏洞: 跨站脚本攻击(XSS):恶意脚本可能通过网页注入到 WebView 中,从而获取用户数据或执行其他恶意操作。 跨站请求伪造(CSRF):攻击者可能诱导 …...
【python】Python中subprocess模块的参数解读以及应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
opencv-python实战项目十一:背景减除法制作运动行人蒙版
文章目录 一,简介二,背景减除法介绍三,算法实现:四,效果: 一,简介 在智能视频监控、人流量统计和运动检测等领域,背景减除法是一种常用的图像处理技术。本文将带您走进OpenCV的世界…...
安防监控/视频汇聚平台EasyCVR如何配置,实现默认获取设备的子码流?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…...
JavaScript基础——闭包
闭包简介 闭包的作用 闭包可以保留变量的状态 闭包可以让变量私有化 闭包的缺点 闭包简介 在JavaScript中,重复声明同一个变量会导致变量冲突,在这个时候可以使用闭包创建独立的执行环境。 在JavaScript中,闭包是指封闭的执行环境ÿ…...
Linux基础入门---安装vmware
😀前言 本篇博文是关于Linux基础入门和vmwarel5.5下载,希望你能够喜欢。 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...
用AppleScript点击无效,继续用pyautogui.click()
目标:点击下图中 CheckBox 元素 第一步:获取这个元素的位置,并打印出value,确认是开关是关的(value0)再继续 set targetbox to checkbox 1 of group 1 of scroll area 1 of scroll area 1 of group 1 of g…...
谈谈我用MemFire Cloud开发应用的这一两年
作为一个独立开发者,这两年我在应用开发的道路上经历了不少挑战和收获。而帮助我度过这些挑战、提高开发效率的“神器”之一,就是MemFire Cloud。如果你还没听说过这个工具,那么我今天就来和你分享一下我使用MemFire Cloud开发应用的经历&…...
AI安全-文生图
1 需求 2 接口 3 示例 大模型图像安全风险探析 - 先知社区 前言 文生图模型是一种新兴的人工智能技术,它通过对大规模文本数据的学习,能够生成逼真的图像。这种模型包含两个主要组件:一个文本编码器和一个图像生成器。 文本编码器接收文本输入,并将其转换为一种数字化的表示…...
Hibernate 使用详解
在现代的Java开发中,数据持久化是一个至关重要的环节。而在众多持久化框架中,Hibernate以其强大的功能和灵活性,成为了开发者们的首选工具。本文将详细介绍Hibernate的原理、实现过程以及其使用方法,希望能为广大开发者提供一些有…...
乐普医疗校招社招笔试/测评通关攻略、最新北森题库、可搜索答案
乐普医疗为什么要做笔试/测评? 笔试/测评是乐普医疗校招社招招聘流程中的必经环节,只有完成笔试/测评,候选人才有机会进入面试流程,同学们收到笔试测评通知后请尽快完成。我们给部分岗位安排了笔试,笔试的成绩对于面试官来说是很重要的参考依据,请同学们在笔试过程…...
uniapp在线下载安装包更新app
首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…...
Unity | AmplifyShaderEditor插件基础(第一集:简单了解ASE和初识)
前言 我本来老老实实的写着我的Shader,群里的小伙伴强烈建议我开始讲ASE,我只能说,我是一个听话的Up。 一、什么是ASE 全称AmplifyShaderEditor,是一个unity插件,存在于unity商城中,售价看他们心情。&am…...
Windows文件资源管理器未响应,磁盘状态正常,很可能是这个原因
最近使用电脑,老感觉性能吃力,就想着自己把一些自动和延迟启动的服务给关掉一些,结果不小心把Work Folders给关闭了。于是,文件资源管理器能正常打开窗口,但是去点击磁盘或者去打开近期访问文件夹,它就会一…...
良好的代码习惯
虽然我们大家都知道这个道理,但能长期坚持下来的并不多。 在多年的项目开发过程中,遇到了各型各色的程序员,有技术一流的,有速度一流的,当然也有bug不断的,但真正能做到养成良好代码习惯并不多,…...
音乐生成模型应用
重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...
DBEUG:二维图尺寸没思路
问题 标注总是不对 解决 关注孔(螺纹 沉头 通孔 标注清楚)关注孔的定位(同心圆 靠边定位)0.02一定打开三维图 看装配关系过盈 还是 查公差表可以min max限制装配公差一定要有意义部分宽度变化大的加平行修改的rev改成1 方框1表…...
【图像去雾系列】使用SSR/MSR/MSRCR/MSRCP/automatedMSRCR算法对单图像进行图像增强,达到去雾效果
目录 一 图像去雾算法概述 二 SSR/MSR/MSRCR算法 三 实践 一 图像去雾算法概述 近些年来,出现了众多的单幅图像去雾算法,其主要可以分为 3 类:基于图像增强的去雾算法、基于图像复原的去雾算法和基于 CNN 的去雾算法。 ▲基于图像增强的去雾算法 通过图像增强技术突出图…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

