Spring —— Spring Boot 日志文件

news2024/11/15 17:52:25
JavaEE传送门

JavaEE

Spring —— Spring Boot 创建和使用

Spring —— Spring Boot 配置文件


目录

  • Spring Boot 日志文件
    • Spring Boot 使用日志
      • 得到日志对象
      • 使用日志对象打印日志
    • 日志级别
      • 日志级别作用
      • 日志级别的分类
      • 日志级别设置
    • 日志持久化
    • 更简单的日志输出 (lombok)


Spring Boot 日志文件

日志是程序的重要组成部分, 可以发现定位问题, 还可以实现:

  • 记录用户登录日志, 分析用户是正常登录还是恶意破解用户
  • 记录系统的操作日志, 方便数据恢复和定位操作人
  • 记录程序的执行时间, 方便为以后后话程序提供数据支持

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

通过上述日志信息, 我们可以发现:

  • Spring Boot 内置了日志框架.
  • 默认情况下, 输出的日志不是开发者定义和打印的.
  • 日志默认时打印在控制台上的, 但控制台的日志是不能被保存的.

Spring Boot 使用日志

我们要使用 Spring Boot 日志, 需要以下两步:

  1. 先得到日志对象
  2. 使用日志对象的相关语法输出要打印的内容

得到日志对象

在程序中获取日志对象需要使用日志工厂 LoggerFactory

// 得到日志对象
private static final Logger logger = LoggerFactory.getLogger(UserController.class);

# 注意 # Logger 对象是属于 org.slf4j 包下的.


使用日志对象打印日志

@RequestMapping("/hi")
public String sayHi() {
    logger.trace("我是 trace");
    logger.debug("我是 debug");
    logger.info("我是 info");
    logger.warn("我是 warn");
    logger.error("我是 error");
    return "Hi, Spring Boot";
}

打印日志展示:

# 注意 # 我们刚刚写了五个方法, 这里却只打印了三个, 这和日志级别有关, 日志在进行打印的时候, 只会打印当前日志级别, 以及比当前日志级别更高的.

日志格式说明


日志级别

日志级别作用

  1. 快速筛选重要的日志
  2. 不同环境实现不同日志级别的设置需求

日志级别的分类

  • trace: 微量, 少许的意思, 级别最低
  • debug: 需要调试时候的关键信息打印
  • info: 普通的打印信息 (默认日志级别)
  • warn: 警告, 不影响使用, 但需要注意的问题
  • error: 错误信息, 级别较高的错误日志信息
  • fatal: 致命的, 因为代码异常导致程序退出执行的事件

日志级别的顺序


日志级别设置

设置日志级别, 只需要在配置文件中设置 “logging.level

# 设置日志级别
logging:
  level:
    root: debug

比之前多了一个 debug 日志

针对不同的目录设置级别


System.out.println VS 日志框架, 两个致命缺点

  1. 打印信息不全 (没有打印日志时间, 没有打印日志的来源)
  2. 不能实现日志打印的隐藏和显示

日志持久化

保存日志到磁盘

# 设置日志的保存目录

# 设置日志文件的目录
logging:
 file:
   path: D:\\logs\\log

# 设置日志文件的文件名

# 设置⽇志文件的文件名
logging:
 file:
   name: D:\\logs\\test.log

# 注意 #

  • System.out.println 打印的日志不能被持久化.
  • 如果设置日志文件的文件名时, 没有写路径, 会和默认程序放到一块.
  • 日志不会被覆盖.

更简单的日志输出 (lombok)

# 添加 lombok 依赖

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

# 使用 @Slf4j 注解输出日志

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

package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/p")
@ResponseBody
@Slf4j
public class ArticleController {
    @RequestMapping("/log")
    public String sayHi() {
        log.error("Slf4j 的error");
        log.warn("Slf4j 的warn");
        log.info("Slf4j 的warn");
        return "hi, articleLog";
    }
}

旧项目添加新依赖

添加 EditStarters 插件

pom.xml 单击右键


🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!

在这里插入图片描述
在这里插入图片描述

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

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

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

相关文章

全网最详细,Jmeter性能测试-性能进阶, 数据驱动将融入性能测试(五)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 本节或者后面都可能…

【汇总版】计算机组成原理思维导图

目录导读与总结汇总思维导图导读与总结 这是一份涵盖计算机组成原理基础知识的思维导图&#xff0c;它包括计算机系统的层次结构、指令和指令执行、CPU的组成和工作原理、存储器的层次结构和管理、输入输出设备的原理和接口、以及汇编语言的基础知识。通过这份思维导图&#x…

Zookeeper源码分析——ZK服务端初始化源码解析

持久化源码 快照 public interface SnapShot {/*** deserialize a data tree from the last valid snapshot and * return the last zxid that was deserialized* 反序列化方法*/long deserialize(DataTree dt, Map<Long, Integer> sessions) throws IOException;/*** …

在Linux中搭建Apache和多个版本PHP源码的集群

ApachePHP安装在公网IP为x.x.x.x的服务器上 需要下载安装的软件版本&#xff1a;httpd-2.4php-5.6php-7.4php-8.0 安装httpd 第一步&#xff0c;查看Linux系统中是否安装了apache。 命令&#xff1a;rpm -qa | grep httpd 若已经安装了&#xff0c;则需要使用命令“yum -y…

前端学习:HTML图像、表格、列表

目录 图像 一、图像标签和源属性(Src) 二、替换文本属性(Alt) 三、设置图片样式基本属性 四、图像标签 表格 一、标签 补充: 二、表格的表头 三、表格常用标签和属性 标签 属性 列表 一、无序列表 二、有序列表 三、定义列表 四、列表常用标签属性 图像 一、…

MATLAB三相LCL滤波型PWM逆变器仿真设计matlab代码(链接在文章结尾)

MATLAB三相LCL滤波型PWM逆变器仿真设计 参考并网电流外环电容电流前馈内环的双闭环控制结构&#xff0c;可以用于光伏和风力发电网侧变换器中进行改造。 三相逆变器通常采用三相桥式逆变电路&#xff0c;采用IGBT作为开关器件的电压型三相桥式逆变电路 在并网逆变器系统中,滤波…

MySQL数据库学习笔记(七)实验课三之拼命的李绿

一来就是实验课三了&#xff0c;那么实验课二呢&#xff1f;实验课二是装配mysql环境那些东西&#xff0c;而我们在前面的笔记中也有关于配置环境的&#xff0c;所以在这里就不再赘述了。 文章目录注意&#xff1a;1&#xff0c;本地文件导入2&#xff0c;数据范围3&#xff0c…

paddle 进行数字识别 (使用ocr数据集)

要点&#xff1a; 喵了个喵&#xff0c;没使用 OCR参考文档&#xff1a; PaddleOCR数字仪表识别——2.数据合成及数据集制作_数字仪表数据集https://blog.csdn.net/castlehe/category_10459202.html?spm1001.2014.3001.5482最佳参考&#xff1a; 基于PaddleOCR的数字显示器字…

SpringBoot ElasticSearch 【SpringBoot系列16】

SpringCloud 大型系列课程正在制作中&#xff0c;欢迎大家关注与提意见。 程序员每天的CV 与 板砖&#xff0c;也要知其所以然&#xff0c;本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发 elasticsearch是一款非常强大的开源搜索引擎&a…

Logstash:部署和扩展 Logstash

Elastic Stack 用于大量用例&#xff0c;从操作日志和指标分析到企业和应用程序搜索。 确保你的数据可扩展、持久且安全地传输到 Elasticsearch 非常重要&#xff0c;尤其是对于任务关键型环境。 本文档的目的是强调 Logstash 最常见的架构模式以及如何随着部署的增长而有效扩…

c++学习之c++对c的扩展2

目录 1.c/c中的const 1 const概述 2 c/c中const的区别 c中的&#xff1a; c中的const&#xff1a; c/c中的const异同 c中const修饰的变量,分配内存情况 尽量以const替换define 2.引用 函数的引用&#xff1a; 引用的本质 指针的引用 5 常量引用 内联函数 内联函数…

(排序7)归并排序(递归)

归并排序 归并排序采用的是两个有序数组的归并。比如说现在想让一个数组有序。之前我们讲过&#xff0c;如果说你现在有两个有序数组的话&#xff0c;那么我们就可以把这两个有序数组给他合并成一个有序数组。两个有序区间归并的思路其实很简单&#xff08;这个也是归并的单趟…

Android 自定义View 之 计时文字

计时文字前言正文一、XML样式二、构造方法三、API方法四、使用五、源码前言 在Android开发中&#xff0c;常常会有计时的一些操作&#xff0c;例如收验证码的时候倒计时&#xff0c;秒表的计时等等&#xff0c;于是我就有了一个写自定义View的想法&#xff0c;本文效果图。 正文…

Vue2-黑马(八)

目录&#xff1a; &#xff08;1&#xff09;router-动态路由 &#xff08;2&#xff09;router-重置路由 &#xff08;3&#xff09;router-页面刷新 &#xff08;1&#xff09;router-动态路由 我们有这样一个需求&#xff0c;不同的用户根据自己的身份不一样&#xff0c;…

Seaborn 数据可视化基础

目录 介绍 知识点 Seaborn 介绍 快速优化图形 Seaborn 绘图 API 一、散点图&#xff1a; 参数hue hue hue_order 参数style 二 、线形图 三、类别图 绘制箱线图 绘制小提琴图 绘制增强箱线图 绘制点线图 绘制条形图 绘制计数条形图 四、分布图 五、回归图 …

nginx配置

单线程应用 稳定性高 系统资源消耗低 线程切换消耗小 对HTTP并发连接处理能力高 单台服务器可支持2w个并发请求 nginx与apache区别 Nginx相对于Apache的优点: 轻量级&#xff0c;同样是 web 服务&#xff0c;比Apache 占用更少的内存及资源&#xff0c;高并发&#xff0…

攻防世界-file_include(convert.iconv的使用)

代码审计&#xff0c;存在文件包含&#xff0c;直接上伪协议 发现不行&#xff0c;应该是存在字符过滤 知识盲区&#xff1a; 1.file://协议&#xff0c;需要填写绝对路径&#xff0c;只能读取txt文件&#xff0c;后面直接跟绝对路径。 file:///etc/passwd 2.php://filter …

深入浅出 Golang 内存管理

了解内存管理~ 前言&#xff1a; 本节课主要介绍了内存管理知识与自动内存管理机制&#xff0c;并对目前 Go 内存管理过程中存在的问题提出了解决方案&#xff0c;同时结合了上次课程学习的《Go 语言性能优化》相关知识&#xff0c;提供可行性的优化建议 … 自动内存管理 Go…

spring-boot怎么扫描不在启动类所在包路径下的bean

前言&#xff1a; 项目中有多个模块&#xff0c;其中有些模块的包路径不在启动类的子路径下&#xff0c;此时我们怎么处理才能加载到这些类&#xff1b; 1 使用SpringBootApplication 中的scanBasePackages 属性; SpringBootApplication(scanBasePackages {"com.xxx.xx…

C++linux高并发服务器项目实践 day5

Clinux高并发服务器项目实践 day5程序和进程单道、多道程序设计时间片并行和并发进程控制块&#xff08;PCB&#xff09;进程状态转换进程的状态进程相关命令进程号和相关函数进程创建父子进程的关系GDB多进程调试程序和进程 程序是包含一系列信息的文件&#xff0c;这些信息描…