打印日志(JAVA)

 1、通过导入包的形式

package com.example.demo;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/log")
@RestController
public class rizhi {private static final Logger logger = LoggerFactory.getLogger(rizhi.class);@RequestMapping("/logg")public String logger(){logger.info("我是日志");return "success";}
}

2、slf4j是一个日志门面,并不是一个实现日志的框架,log4j是实现日志的框架(SLF4J不同于其他⽇志框架, 它不是⼀个真正的⽇志实现, ⽽是⼀个抽象层, 对⽇志框架制定的⼀种规范, 标准, 接⼝. 所有SLF4J并不能独⽴使⽤, 需要和具体的⽇志框架配合使用

3、SLF4J是⻔⾯模式的典型应⽤,⻔⾯模式(Facade Pattern)⼜称为外观模式, 提供了⼀个统⼀的接⼝, ⽤来访问⼦系统中的⼀群接⼝. 其主要特征是定义了⼀个⾼层接⼝, 让⼦系统更容易使⽤

4、门面模式实现

(1)⽐如去医院看病,可能要去挂号, ⻔诊, 化验, 取药, 让患者或患者家属觉得很复杂, 如果有提供接待⼈员, 只让接待⼈员来处理, 就很⽅便

(2)回家, 我们会开各个屋的灯. 离开家时, 会关闭各个屋的灯如果家⾥设置⼀个总开关, 来控制整个屋的灯就会很⽅便.

5、门面模式的优点

(1)减少了系统的相互依赖. 实现了客⼾端与⼦系统的耦合关系, 这使得⼦系统的变化不会影响到调⽤它
的客⼾端;
(2)提⾼了灵活性, 简化了客⼾端对⼦系统的使⽤难度, 客⼾端⽆需关⼼⼦系统的具体实现⽅式, ⽽只需要和⻔⾯对象交互即可.
(3)提⾼了安全性. 可以灵活设定访问权限, 不在⻔⾯对象中开通⽅法, 就⽆法访问

6、不引入日志门面产生的问题

(1)不同⽇志框架的API接⼝和配置⽂件不同, 如果多个⽇志框架共存, 那么不得不维护多套配置⽂件(这
个配置⽂件是指⽤⼾⾃定义的配置⽂件).
(2)如果要更换⽇志框架, 应⽤程序将不得不修改代码, 并且修改过程中可能会存在⼀些代码冲突.
(3)如果引⼊的第三⽅框架, 使⽤了多套, 那就不得不维护多套配置

7、 日志级别的分类(由开发人员自己设定)

(1)⽇志的级别从⾼到低依次为: FATAL、ERROR、WARN、INFO、DEBUG、TRACE
(2)FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误.
(3)ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏.
(4)WARN: 警告信息, 不影响使⽤, 但需要注意的问题
(5)INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息, 例如系统启动完成、请求处理完成等.
(6)DEBUG: 调试信息, 需要调试时候的关键信息打印.
(7)TRACE: 追踪信息, ⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)
8、日志级别的使用
@RequestMapping("/printLog")
public String printLog() {logger.trace("================= trace ===============");logger.debug("================= debug ===============");logger.info("================= info ===============");logger.warn("================= warn ===============");logger.error("================= error ===============");return "打印不同级别的⽇志" ;
}

 我们发现只有三个显示出来了,因为出现fatal⽇志,表⽰服务已经出现了某种程度的不可⽤,⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就是info, warn和error

9、设置显示什么日志(通过配置文件来完成),此时就可以将debug文件显示出来

(1)Properties配置

logging.level.root: debug

(2)yml配置

logging:level:root: debug

10、日志持久化显示(以上的⽇志都是输出在控制台上的, 然⽽在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追溯问题. 把⽇志保存下来就叫持久化

logging:file:path: D:/tempname:logger/ioc.log

解释:如果我们path和name同时存在时候,我们的path会不生效,我们的name可以为他命名,此时命名为ioc.log,我们名字头面加了一个logger的意思时我们会把ioc.log文件存放在logger下面,如果没头面的logger我们就会默认把ioc.log放在我们的src文件下面

11、我们的yml配置都可以去spring文档里面找

12、文件分割(如果一个文件太大,就不方便我们观看)

logging:logback:rollingpolicy:file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%imax-file-size: 2KB

(1)日志分割格式

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

(2)文件达到2KB就进行分割,划分出一个新的文件

max-file-size: 2KB

13、配置项说明

(1)%clr(表达式){颜⾊} 设置输⼊⽇志的颜⾊

(2)%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} ⽇期和时间--精确到毫秒

(3)%5p 显⽰⽇志级别ERROR,MARN,INFO,DEBUG,TRACE

(4)%t 线程名. %c 类的全限定名. %M method. %L 为⾏号. %thread 线程名称. %m 或者%msg 显⽰输出消息. %n 换⾏符

(5)%5 若字符⻓度⼩于5,则右边⽤空格填充. %-5 若字符⻓度⼩于5,则左边⽤空格填充. %.15 若字符⻓度超过15,截去多余字符. %15.15 若字符⻓度⼩于15,则右边⽤空格填充. 若字符⻓度超过15,截去多余字符

14、需要配置, 让idea⽀持控制台颜⾊显⽰

在这里添加配置项,让日志显示颜色配置项 -Dspring.output.ansi.enabled=ALWAYS

15、配置日志格式

(1)Properties配置

logging.pattern.console='%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

(2)yml配置

logging:pattern:console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

console:控制台日志

file:文件日志

16、更简单的日志打印方法(用@slf4j)lombok提供的 @Slf4j 会帮我们提供⼀个⽇志对象 log, 我们直接使⽤就可以

(1)引入依赖

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

(2)输出日志

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class LogController {public void log(){log.info("--------------要输出⽇志的内容----------------");}
}

17、模板模式:定义了一些方法,一个流程,并不实现,创建一些子类来实现

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

信息系统项目管理师——第17章项目干系人管理

本章节内容属于10大管理知识领域&#xff0c;选择、案例、论文都会考。 选择题&#xff0c;稳定考1-2分左右&#xff0c;新教材基本考课本原话&#xff0c;这个分不能丢。 案例题&#xff0c;本期考的概率一般。 论文题&#xff0c;202205期考过。 1管理基础 管理的重要性 为…

北京可安可智能科技有限公司:创新巡检,智慧守护

在智能化的浪潮中&#xff0c;北京可安可智能科技有限公司以其创新的机器人巡检产品和方案&#xff0c;正引领安防巡检领域迈向一个新的里程碑。作为人工智能科技创新的先锋&#xff0c;我们专注于利用科技力量提升行业标准&#xff0c;降低用人成本&#xff0c;为安保场景提供…

番外篇 | 引入RepVGG重参数化模块 | 即插即用,实现有效涨点

前言:Hello大家好,我是小哥谈。重参数化模块(RepVGG)是一种深度学习模型,它借鉴了卷积神经网络(CNN)中的卷积操作,并对其进行了一些改进,以提高模型的性能和计算效率。RepVGG的核心思想是通过重参数化技术,对卷积操作中的权重进行重新配置,以适应不同的数据集和任务…

file_get_contents(‘php://input‘); 这个postman要如何传参

在 Postman 中传递参数给 file_get_contents(php://input); 是通过请求的 Body 部分来实现的。使用 Postman 进行 API 接口测试时&#xff0c;可以按照以下步骤来传递参数&#xff1a; 打开 Postman 并创建一个新的请求。在请求的 URL 地址栏输入你的 API 地址。选择请求方法为…

基于java的java二手手机回收平台系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

【力扣】11. 盛最多水的容器

11. 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&…

day10 java封装性

封装性 为什么有封装性&#xff1f; 为了保护数据不被随意修改&#xff0c;隐藏类的实现细节。增强了代码的安全性和可维护性。 该隐藏隐藏 该暴露暴露 封装性的实现&#xff1f; 让调用者只能通过方法操作属性。可以在方法中加入一些限制条件或数据检查的操作。 封装性的直…

Java获取IP地址以及MAC地址(附Demo)

目录 前言1. IP及MAC2. 特定适配器 前言 需要获取客户端的IP地址以及MAC地址 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class test {public static void main(String[] args) {try {// 执行命令Process process…

AI 论道|极狐GitLab 客户私享会上海站成功举办

3 月 22 日下午&#xff0c;极狐GitLab 在上海办公室举办了客户私享会&#xff0c;邀请了来自多个行业的多家客户&#xff0c;围绕 AI 提升研发效率的道法术器进行了充分交流。整个交流时长达两个多小时。 极狐GitLab 战略业务与区域发展副总裁何庆出席了此次活动并致开场辞。他…

成员变量、局部变量

变量分类 定义位置不同 成员变量定义在类中&#xff0c;成员方法之外 局部变量定义在局部范围内&#xff0c;如方法参数&#xff0c;方法内部&#xff0c;循环结构中等 作用范围不同&#xff08;空间&#xff09; 成员变量在整个类内有效&#xff0c;与声明位置无关 局部变…

软考高级架构师:系统性能设计-阿姆达尔定律概念和例题

一、AI 讲解 系统性能设计中的一个重要概念是阿姆达尔定律&#xff08;Amdahl’s Law&#xff09;。阿姆达尔定律是由吉恩阿姆达尔&#xff08;Gene Amdahl&#xff09;在1967年提出的&#xff0c;用于评估系统性能提升的理论上限&#xff0c;特别是在考虑并行计算时。该定律表…

线性数据结构

1.数组 数组使用一块连续的内存来存储元素&#xff0c;并且元素的类型都是相同的。可以通过索引来访问。 2.链表 链表由一系列节点组成&#xff0c;每个节点包含两部分&#xff1a;数据部分和指针部分。数据部分用于存储元素的值&#xff0c;指针部分则指向下一个节点。没有使…

真·面试题总结——JVM虚拟机

JVM虚拟机 JVM虚拟机规范与实现 JVM虚拟机规范 JVM虚拟机实现 JVM的常见实现 JVM虚拟机物理架构 JVM虚拟机的运转流程 JVM类加载过程 JVM类加载器及类加载器类型 JVM类加载器双亲委派机制 JVM运行时数据区的内存模型 JVM运行时数据区的内存模型&#xff1a;程序计数器…

【JavaScript】函数 ③ ( 形参 与 实参 匹配问题 | 实参个数 = 形参个数 | 实参个数 > 形参个数 | 实参个数 < 形参个数 )

文章目录 一、JavaScript 函数 形参 与 实参 匹配问题1、函数形参与实参不匹配问题2、形参与实参个数匹配3、实参个数 > 形参个数4、实参个数 < 形参个数5、完整代码示例 一、JavaScript 函数 形参 与 实参 匹配问题 1、函数形参与实参不匹配问题 在 其它语言 中 , 如 Ja…

【面试题】spring 事务在哪些情况下会失效?

以下几种情况&#xff0c;会造成事务失效 直接new出来的对象添加事务不起作用&#xff0c;因为只有spring定义的bean才接受事务。 由于mysql的引擎用Myisam不支持事务&#xff0c;所以如果使用mysql的myisam引擎的话&#xff0c;事务不起作用。 如果Transaction注解到非publi…

ABAP 时间函数-F4

屏幕时间函数 操作 1.屏幕字段属性设置&#xff0c;如图: 2.代码: DATA L_TIME TYPE SY-UZEIT. CALL FUNCTION F4_CLOCK EXPORTING START_TIME SY-UZEIT DISPLAY IMPORTING SELECTED_TIME L_TIME.

h5 笔记1

Internet是InternationalNetwork的缩写&#xff0c;又称“因特网”。它是将全世界数以千计的上网设备通过TCP/IP通信协议连接在一起。Internet上的服务众多&#xff0c;主要的服务有WWW(万维网)、E-Mail(电子邮件)、FTP(FileTransferProtocol&#xff0c;文件传输协议)、Telnet…

PEFT-LISA

LISA是LoRA的简化版&#xff0c;但其抓住了LoRA微调的核心&#xff0c;即LoRA侧重更新LLM的底层embedding和顶层head。 根据上述现象&#xff0c;LISA提出两点改进&#xff1a; 始终更新LLM的底层embedding和顶层head随机更新中间层的hidden state 实验结果 显存占用 毕竟模型…

【C++】二分查找算法(模板)

重点 只需要记住两点&#xff1a; 1.left right 时&#xff0c;一定就是最终结果&#xff08;包括找不到目标值&#xff09;&#xff0c;无需再次判断&#xff0c;如果判断就会死循环 2.求中点如果是求左端点 mid left (right - left)/2 如果是求右端点 mid left (right -…

最新版两款不同版SEO超级外链工具PHP源码

可根据个人感觉喜好自行任意选择不同版本使用&#xff08;版V1或版V2&#xff09; 请将zip文件全部解压缩即可访问&#xff01; 源码全部开源&#xff0c;支持上传二级目录访问 已更新增加大量高质量外链&#xff08;若需要增加修改其他外链请打开txt文件&#xff09;修复优…