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 对象

其他常用注解:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue模板编译

Vue模板编译 Vue生命周期中&#xff0c;在初始化阶段各项工作做完之后调用了vm.$mount方法&#xff0c;该方法的调用标志着初始化阶段的结束和进入下一个阶段&#xff0c;从官方文档给出的生命周期流程图中可以看到&#xff0c;下一个阶段就进入了模板编译阶段(created和befor…

ssm基于web的马病管理系统设计与实现+jsp论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;马病信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…

基于OpenAI的Whisper构建的高效语音识别模型:faster-whisper

1 faster-whisper介绍 faster-whisper是基于OpenAI的Whisper模型的高效实现&#xff0c;它利用CTranslate2&#xff0c;一个专为Transformer模型设计的快速推理引擎。这种实现不仅提高了语音识别的速度&#xff0c;还优化了内存使用效率。faster-whisper的核心优势在于其能够在…

【网络安全】upload靶场pass1-10思路

目录 Pass-1 Pass-2 Pass-3 Pass-4 Pass-5 Pass-6 Pass-7 Pass-8 Pass-9 Pass-10 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1…

【六袆 - Framework】vue3入门;vue框架的特点矩阵列举;Vue.js 工作原理

vue框架的特点 Vue.js的特点展开叙述Vue.js的工作原理展开叙述 官方文档&#xff1a; https://cn.vuejs.org/guide/introduction.html Vue.js的特点 ┌────────────────────┬────────────────────────────────────…

一款超酷的一体化网站测试工具:Web-Check

Web-Check 是一款功能强大的一体化工具&#xff0c;用于发现网站/主机的相关信息。用于检查网页的工具&#xff0c;用于确保网页的正确性和可访问性。它可以帮助开发人员和网站管理员检测网页中的错误和问题&#xff0c;并提供修复建议。 它只需要输入一个网站就可以查看一个网…

用友时空KSOA UploadImage存在任意文件上传漏洞

产品简介 用友时空KSOA是建立在SOA理念指导下研发的新一代产品&#xff0c;是根据流通企业最前沿的I需求推出的统一的IT基础架构&#xff0c;它可以让流通企业各个时期建立的IT系统之间彼此轻松对话&#xff0c;帮助流通企业保护原有的IT投资&#xff0c;简化IT管理&#xff0…

开放网络+私有云=?星融元的私有云承载网络解决方案实例

在全世界范围内的云服务市场上&#xff0c;开放网络一直是一个备受关注的话题。相比于传统供应商的网络设备&#xff0c;开放网络具备软硬件解耦、云原生、可选组件丰富等优势&#xff0c;对云服务商和超大型企业有足够的吸引力。 SONiC作为开源的网络操作系统&#xff0c;使得…

《A++ 敏捷开发》-2 改进从团队开始

上一章介绍了丰田方式水面下的七个习惯&#xff0c;但公司应如何有效开展与推行&#xff1f;有哪些误区要注意&#xff1f;我们先看美国东岸某家小印刷公司的故事。 美国费城Weisbord故事 60年代复印机还未普及&#xff0c;很昂贵&#xff0c;所以有不少公司专门为各类公司客…

python+django网上购物商城系统o9m4k

语言&#xff1a;Python 框架&#xff1a;django/flask可以定制 软件版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发工具pycharm/vscode都可以 前端框架:vue.js 系统使用过程主要涉及到管理员和用户两种角色&#xff0c;主要包含个…

什么是SSL证书?在哪里免费申请?

随着互联网蓬勃发展&#xff0c;人们在日常生活中越来越依赖网络。然而&#xff0c;网络攻击和数据泄露日益猖獗&#xff0c;保护网站和用户信息的安全变得尤为紧迫。在这一背景下&#xff0c;SSL证书成为至关重要的安全措施。 SSL证书的首要功能在于防范网络攻击。相较于不安全…

Factory Method工厂模式(对象创建)

Factory Method&#xff08;对象创建&#xff09; 链接&#xff1a;工厂模式实例代码 解析 目的 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化。 如何应对这种变化&#xff1f;如何绕过常规的…

【JavaEE进阶】 初识Spring Web MVC

文章目录 &#x1f334;什么是Spring Web MVC&#xff1f;&#x1f6a9;什么是Servlet呢? &#x1f38b;MVC 定义&#x1f6a9;再理解Spring MVC &#x1f340;如何学习Spring MVC呢&#xff1f;⭕总结 &#x1f334;什么是Spring Web MVC&#xff1f; Spring Web MVC 是基于…

算法刷题:最大异或对(Trie树扩展)、食物链(并查集扩展)

目录 引言一、最大异或对&#xff08;Trie树扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 二、食物链&#xff08;并查集扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 引言 这两个扩展题能够让我们更加的熟悉Trie树和并查集的使用&#xff0c;这两道题可以…

Prim(普利姆)算法总结

知识概览 Prim算法分为朴素版Prim算法和堆优化版Prim算法。朴素版Prim算法时间复杂度为&#xff0c;适用于稠密图。堆优化版Prim算法时间复杂度为O(mlogn)&#xff0c;适用于稀疏图&#xff0c;由于代码较Kruskal算法复杂&#xff0c;这里就不介绍了。 算法思想 例题展示 题目…

引领手游技术潮流:武汉灰京文化的卓越技术创新与市场推广支持

在数字娱乐领域&#xff0c;手游行业正蓬勃发展&#xff0c;为数以亿计的玩家提供了丰富的娱乐选择。武汉灰京文化&#xff0c;作为该领域的佼佼者&#xff0c;以其强大的技术创新和全面的市场推广支持&#xff0c;为合作伙伴的成功铺平了道路&#xff0c;不仅提升了游戏质量&a…

《深入理解JAVA虚拟机笔记》垃圾回收器

JVM 判定 Java 对象是否为垃圾的方法 引用计数算法 很多教科书判断对象是否存活的算法是这样的: 在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器值就加一&#xff1b;当引用失效时&#xff0c;计数器值就减一&#xff1b;任何时刻计数器为…

用python画最简单的图案,用python画小猫简单代码

本篇文章给大家谈谈用python画小猫简单100行代码&#xff0c;以及用python画最简单的图案&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 Source code download: 本文相关源码 from turtle import * #两个函数用于画心 defcurvemove():for i in range(200): …

Python学习 - 爬虫系统架构设计

主要业务流程 初始请求请求过滤器请求队列响应下载器数据解析器数据清洗器存储器 设计图 master slave&#xff1a;master控制队列&#xff0c;过滤&#xff0c;传递任务&#xff1b;slave负责执行 缺点&#xff1a;master和slave端交互数据频繁&#xff0c;slave的数据进出…

Linux-权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再 linux 系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在 linux 下做有限的事情。 超级用户的命令提示符是 “#” &#xff0c…