【后端开发】Spring日志

文章目录

  • Spring日志
    • 日志作用
    • 日志测试
    • 日志信息
    • 日志级别
    • 日志配置
      • 配置日志级别
      • 日志持久化
      • 日志文件分割
    • 注解的使用

Spring日志

日志作用

  1. 系统监控:可以通过日志记录这个系统的运行状态,对数据进行分析,设置不同的规则,超过阈值时进行报警。
  2. 数据采集:数据采集是一个比较大的范围,采集的数据可以作用在很多方面,比如数据统计,推荐排序等。
  3. 日志审计:通过系统日志分析,可以判断一些非法攻击,非法调用,以及系统处理过程中的安全隐患。

日志测试

SpringBoot 内置了日志框架 Slf4j,可以直接在程序中调用 Slf4j 来输出日志。

@RequestMapping("/logger")
@RestController
public class LoggerController {private static Logger logger = LoggerFactory.getLogger(LoggerController.class);@RequestMapping("/print")public String print() {logger.info("使用日志对象打印日志");System.out.println("使用sout打印日志");return "success";}
}

日志信息

在这里插入图片描述

日志级别

日志级别代表着日志信息对应问题的严重性,目的是为了更快的筛选符合目标的日志信息。
日志的级别从高到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE

1.FATAL:致命信息,表示需要立即被处理的系统级错误
2.ERROR:错误信息,级别较高的错误日志信息,但仍然不影响系统的继续运行
3.WARN:警告信息,不影响使用,但需要注意的问题(以上的错误如果长期不处理,会引起故障)
4.INFO:普通信息,用于记录应用程序正常运行时的一些信息
5.DEBUG:调试信息,需要调试时候的关键信息打印
6.TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则请使用DEBUG级别替代)

注意:日志级别通常和测试人员的Bug级别没有关系,日志级别是开发人员自己设置的,开发人员根据自己的理解来判断该信息的重要程度。

    @RequestMapping("/level")public String levelPrint() {logger.trace("=======trace级别日志=======");logger.debug("=======debug级别日志=======");logger.info("=======info级别日志=======");logger.warn("=======warn级别日志=======");logger.error("=======error级别日志=======");return "success";}

此时控制台只打印info,warn和error级别的日志,不会打印出debug,trace级别的日志,这与日志级别的配置有关,日志的输出级别默认是 info 级别,所以只会打印大于等于此级别的日志,也就是info,warn和error。

日志配置

配置日志级别

整个程序(root)日志的输出级别设置为debug级别。

logging:level:root: debug

这样控制台打印出来的日志信息就包括debug级别以及debug以上级别的信息,包括info,warn,error。

日志持久化

以上的日志都是输出在控制台上的,然而在线上环境中,需要把日志保存下来,以便出现问题之后追 溯问题,把日志保存下来就叫持久化。日志持久化有两种方式:

  1. 配置日志文件名
logging:file:name: logger/captcha.log

日志信息将存储到文件主目录下的logger的captcha.log文件中。

  1. 配置日志的存储目录
    这种方式只能设置日志的路径,文件名为固定的spring.log。
logging:file:name: logger

logging.file.name 和 logging.file.path 都配置的情况下,仅 logging.file.name 有用。

日志文件分割

如果日志都放在一个文件中,随着项目的运行,日志文件会越来越大,需要对日志文件进行分割。日志框架考虑到了这一点,会自动配置。
默认日志文件超过10M就进行分割,并且设定其命名格式。

logging:logback:rollingpolicy:max-file-size: 10MBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

注解的使用

lombok提供 @Slf4j 会提供一个日志对象 log,实际工作中直接使用就可以。

@Slf4j
@RequestMapping("/logger2")
@RestController
public class LoggerController2 {@RequestMapping("/log")public String print() {log.info("使用日志对象打印日志");System.out.println("使用sout打印日志");return "success";}
}

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

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

相关文章

探索大语言模型(LLM):Transformer 与 BERT从原理到实践

Transformer 与 BERT:从原理到实践 前言一、背景介绍二、核心公式推导1. 注意力机制(Attention Mechanism)2. 多头注意力机制(Multi-Head Attention)3. Transformer 编码器(Transformer Encoder&#xff09…

计算机网络八股——HTTP协议与HTTPS协议

目录 HTTP1.1简述与特性 1. 报文清晰易读 2. 灵活和易于扩展 3. ⽆状态 Cookie和Session 4. 明⽂传输、不安全 HTTP协议发展过程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS协议 HTTP协议和HTTPS协议的区别 HTTPS中的加密方式 HTTPS中建立连接的方式 前言&#xff…

QML中的3D功能--入门开发

Qt Quick 提供了强大的 3D 功能支持,主要通过 Qt 3D 模块实现。以下是 QML 中开发 3D 应用的全面指南。 1. 基本配置 环境要求 Qt 5.10 或更高版本(推荐 Qt 6.x) 启用 Qt 3D 模块 支持 OpenGL 的硬件 项目配置 在 .pro 文件中添加: QT += 3dcore 3drender 3dinput 3dex…

Git合并分支的两种常用方式`git merge`和`git cherry-pick`

Git合并分支的两种常用方式git merge和git cherry-pick 写在前面1. git merge用途工作方式使用git命令方式合并使用idea工具方式合并 2. git cherry-pick用途工作方式使用git命令方式合并使用idea工具方式合并 3. 区别总结 写在前面 一般我们使用git合并分支常用的就是git mer…

Web三漏洞学习(其三:rce漏洞)

靶场:NSSCTF 三、RCE漏洞 1、概述 在Web应用开发中会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞 所以常见的RCE漏洞函数又分为代码执行函数和系统命令执行函数…

从零开始:Python运行环境之VSCode与Anaconda安装配置全攻略 (1)

从零开始:Python 运行环境之 VSCode 与 Anaconda 安装配置全攻略 在当今数字化时代,Python 作为一种功能强大且易于学习的编程语言,被广泛应用于数据科学、人工智能、Web 开发等众多领域。为了顺利开启 Python 编程之旅,搭建一个稳…

从FPGA实现角度介绍DP_Main_link主通道原理

DisplayPort(简称DP)是一个标准化的数字式视频接口标准,具有三大基本架构包含影音传输的主要通道(Main Link)、辅助通道(AUX)、与热插拔(HPD)。 Main Link:用…

嵌入式软件--stm32 DAY 2

大家学习嵌入式的时候,多多学习用KEIL写代码,虽然作为编译器,大家常用vscode等常用工具关联编码,但目前keil仍然是主流工具之一,学习掌握十分必要。 1.再次创建项目 1.1编译器自动生成文件 1.2初始文件 这样下次创建新…

游戏引擎学习第234天:实现基数排序

回顾并为今天的内容设定背景 我们今天继续进行排序的相关,虽然基本已经完成了,但还是想收尾一下,让整个流程更完整。其实这次排序只是个借口,主要是想顺便聊一聊一些计算机科学的知识点,这些内容在我们项目中平时不会…

计算机网络——常见的网络攻击手段

什么是XSS攻击,如何避免? XSS 攻击,全称跨站脚本攻击(Cross-Site Scripting),这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,因此有人将跨站脚本攻击缩写为XSS。它指的是恶意攻击者往Web页面…

Agent的九种设计模式 介绍

Agent的九种设计模式 介绍 一、ReAct模式 原理:将推理(Reasoning)和行动(Acting)相结合,使Agent能够在推理的指导下采取行动,并根据行动的结果进一步推理,形成一个循环。Agent通过生成一系列的思维链(Thought Chains)来明确推理步骤,并根据推理结果执行相应的动作,…

LeetCode 热题 100:回溯

46. 全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#xff…

cJSON_Print 和 cJSON_PrintUnformatted的区别

cJSON_Print 和 cJSON_PrintUnformatted 是 cJSON 库中用于将 cJSON 对象转换为 JSON 字符串的两个函数,它们的区别主要在于输出的格式: 1. cJSON_Print 功能:将 cJSON 对象转换为格式化的 JSON 字符串。 特点: 输出的 JSON 字符…

A股周度复盘与下周策略 的deepseek提示词模板

以下是反向整理的股票大盘分析提示词模板,采用结构化框架数据占位符设计,可直接套用每周市场数据: 请根据一下markdown格式的模板,帮我检索整理并输出本周股市复盘和下周投资策略 【A股周度复盘与下周策略提示词模板】 一、市场…

Linux下使用C++获取硬件信息

目录 方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文件获取BIOS信息有两种方法:1、读取文件;2、使用dmidecode命令获取主板信息有两种方法:1、读取文件&#xff1…

BootStrap:进阶使用(其二)

今天我要讲述的是在BootStrap中第二篇关于进一步使用的方法与代码举例; 分页: 对于一些大型网站而言,分页是一个很有必要的存在,如果当数据内容过大时,则需要分页来分担一些,这可以使得大量内容能整合并全面地展示&a…

【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现

在技术派社区中,为了保证文章的质量和社区的良性发展,所有发布的文章都需要经过审核。然而,并非所有作者的文章都需要审核,我们通过白名单机制来优化这一流程。本文将详细介绍技术派中白名单的实现方式,以及如何利用Re…

TRAE.AI 国际版本

国际版下载地址: https://www.trae.ai/https://www.trae.ai/ 国际版本优势:提供更多高校的AI助手模型 Claude-3.5-Sonnet Claude-3.7-Sonnet Gemini-2.5-Pro GPT-4.1 GPT-40 DeepSeek-V3-0324DeepSeek-V3DeepSeek-Reasoner(R1)

关于支付宝网页提示非官方网页

关于支付宝网站提示 非官方网站 需要找官方添加白名单 下面可以直接用自己的邮箱去发送申请 支付宝提示“非支付宝官方网页,请确认是否继续访问”通常是因为支付宝的安全机制检测到您访问的页面不是支付宝官方页面,这可能是由于域名或页面内容不符合支…

【今日三题】打怪(模拟) / 字符串分类(字符串哈希) / 城市群数量(dfs)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;每日两三题 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 打怪(模拟)字符串分类(字符串哈希)城市群数量(dfs) 打怪(模拟) 打怪 #include <iostream> using namespace std;int …