SpringBoot 日志打印

一. 自定义打印日志

开发者自定义打印日志实现步骤:

• 在程序中得到日志对象

• 使用日志对象的相关语法输出要打印的内容.

得到日志对象:

//日志工厂需要将需要打印的类的类型传递进去,这样我们才知道日志的归属类,才能更方便的定位到文体类
private static Logger logger= LoggerFactory.getLogger(LogController.class);

注意: Logger 对象是属于 org.slf4j 包下的,不要导错包

使用日志对象打印日志:

    @RequestMapping("/log")public void log(){String mesg="今天是周五,我要成为Java高手";logger.trace("trace -> "+mesg);logger.debug("debug -> "+mesg);logger.info("debug -> "+mesg);logger.warn("warn -> "+mesg);logger.error("error -> "+mesg);}

打印日志效果:

在代码中我们明明打印了五次,但为什么只打印了三条日志信息呢? 这就又涉及到了日志级别

二. 日志级别 

2.1 日志级别作用

1. 日志级别可以帮我们筛选出重要的信息,比如设置日志级别为error ,那么就可以只看程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了,从而节省开发者信息筛选的时间.

2. 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保证性能和安全性就会输出尽量少的日志,而通过日志的级别就可以实现此需求.

2.2 日志级别的分类与使用

日志级别:

• trace:微量,少许的意思,级别最低;

• debug:需要调试的时候的关键信息打印;

• info:普通的打印信息(默认日志级别);

• warn:警告,不影响使用,但需要注意的问题;

• error:错误信息,级别较高的错误日志信息;

• fatal:致命的,因为代码异常导致程序退出执行的时间(只有系统崩溃的时候才能输出的日志级别)

日志级别顺序:

级别越高,接收到的消息就越少,如果设置了 warn 就只能收到 warn、error、fatal 级别的日志了

日志级别的设置 

日志级别配置只需要在配置文件中设置“logging.level” 配置项即可:

#整个项目的日志级别
logging.level.root=warn
#给文件夹单独设置级别(level后跟对应的包名)
logging.level.www.logPrint.LogController2=warn
logging.level.www.logPrint.LogController=trace

为什么Spring Boot 可以打印日志?并设置日志级别?

因为SpringBoot 内置了两个日志框架:SLF4J + LogBack

SLF4J:让开发者使用和调用框架(底层实现日志打印的框架很多,开发者无需关心调用哪个框架,开发者只需要向SLF4J提供需求就行了)

LogBacd:最底层实现日志相关操作的框架

 三. 日志的持久化

日志的持久化能够保留到我们的磁盘上,方便发现问题后追溯问题

#设置日志文件的目录
logging.file.path=E:\\Code
#配置日志文件名
logging.file.name=E:\\Code\\2023_12_30
#配置日志文件名(直接写名字会在项目目录中创建一个日志文档)
logging.file.name=2023_12_30

四. 更简单的日志输出-lombok

安装插件:

添加依赖 :

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

输出日志:

//相当于@ResponseBody + @Controller
@RestController
@Slf4j
public class LogController {
//    private Logger logger
//            = LoggerFactory.getLogger(LogController.class);@RequestMapping("/log")public void log(){String mesg="今天是周五,我要成为Java高手";log.trace("trace -> "+mesg);log.debug("debug -> "+mesg);log.info("info -> "+mesg);log.warn("warn -> "+mesg);log.error("error -> "+mesg);}
}

注:使用 @Slf4j 注解,在程序中使用log对象即可输出日志,并且只能使用log对象才能输出,这是lombok 提供的对象名.

五. lombok原理解释

Java程序的运行原理:

 

Lombok 的作用如下图所示:

 

lombok 能够打印日志的密码就在 target 目录里面,target 为项目最终执行的代码,查看 target 目录如下 :

 

在编译时期,Lombok将 .java 文件编译成 .class 文件时,自动生成变量名为 log 的 Logger 对象

其他常用注解:

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

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

相关文章

个人财务管理软件Money Pro mac功能特点

Money Pro mac是一款专为Mac用户设计的个人财务管理软件&#xff0c;具有全面的账户管理、智能的预算规划、强大的投资分析、丰富的报表和图表、安全的数据保护以及易于使用的界面设计等特点。 Money Pro mac功能和特点 全面的账户管理&#xff1a;支持多种账户类型&#xff0…

大数定律中心极限定理

1.切比雪夫不等式 切比雪夫不等式可以对随机变量偏离期望值的概率做出估计&#xff0c;这是大数定律的推理基础。以下介绍一个对切比雪夫不等式的直观证明。 1.1 示性函数 对于随机事件A&#xff0c;我们引入一个示性函数 I A { 1 , A发生 0 , A不发生 I_A\begin{cases} 1&…

FAST-LIO论文解析

题目&#xff1a;FAST-LIO&#xff1a;一种快速鲁棒的基于紧耦合迭代卡尔曼滤波的雷达-惯导里程计 摘要 本文提出了一种计算效率高、鲁棒性好的激光-惯性里程计框架。我们使用紧耦合的迭代扩展卡尔曼滤波器将LiDAR特征点与IMU数据融合在一起&#xff0c;从而在快速运动、嘈杂…

.NetCore NPOI 读取excel内容及单元格内图片

由于数据方提供的数据在excel文件中不止有文字内容还包含图片信息&#xff0c;于是编写相关测试代码&#xff0c;读取excel文件内容及图片信息. 本文使用的是 NPOI-2.6.2 版本&#xff0c;此版本持.Net4.7.2;.NetStandard2.0;.NetStandard2.1;.Net6.0。 测试文档内容&#xf…

IP地理位置定位技术基本原理

IP地理位置定位技术的基本原理是基于IP地址的特性。每个IP地址在网络中都有一个与之对应的地理位置信息&#xff0c;这是通过IP地址数据库来确定的。这个数据库由ISP&#xff08;Internet Service Provider&#xff09;或其它一些机构维护&#xff0c;其中包含了每个IP地址的地…

两向量叉乘值为对应平行四边形面积--公式推导

两向量叉乘值为对应平行四边形面积--公式推导 介绍 介绍

每日一题——LeetCode942

方法一 个人方法&#xff1a; 找规律&#xff0c;碰到I优先放最小的数&#xff0c;碰到D优先放最大的数&#xff0c;将0-n按照从小到大的顺序放入数组保存&#xff0c;碰到I就从数组前面取值&#xff0c;碰到D就从数组后面取值 var diStringMatch function(s) {var arr[],pe…

windows 安装multipass

安装说明 Multipass orchestrates virtual Ubuntu instances Launch an instance (by default you get the current Ubuntu LTS) multipass launch --name foo 下载 Multipass orchestrates virtual Ubuntu instances 安装 执行安装exe 前提 需要安装hyper-V 参考链接 …

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP&#xff0c;SCAP的产生背景是怎样的&#xff0c;SCAP有什么用途&#xff0c;有哪些组件&#xff0c;各个组件的用途是什么&#xff1f; SCAP产生背景 由于计算机和网络技术的快速发展&#xff0c;越来越多的软件和系统被应用到企业和机构中&#xff0c…

slf4j+logback源码加载流程解析

Logger log LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示&#xff0c;在项目中通常会这样创建一个Logger对象去打印日志。 然后点进去&#xff0c;会走到LoggerFactory的getILoggerFactory方法&#xff0c;如下代码所示。 public static ILoggerFactory getILo…

java go c++ 开源全文搜索引擎

Apache Lucene Java 全文搜索框架 许可证&#xff1a;Apache-2.0 开发语言&#xff1a;Java 官网&#xff1a;https://lucene.apache.org/ Apache Lucene 是完全用 Java 编写的高性能、功能齐全的全文检索引擎架构&#xff0c;提供了完整的查询引擎和索引引擎、部分文本分析引…

Java项目:101SpringBoot仓库管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 仓库管理系统基于SpringBootMybatis开发&#xff0c;系统使用shiro框架做权限安全控制&#xff0c;超级管理员登录系统后可根据自己的实际需求配角色&…