Java --- springboot3之日志管理

news2024/11/25 11:18:45

目录

一、日志整合原理

1.1、简介

 1.2、日志格式

1.3、记录日志

1.4、日志级别

1.5、日志分组

1.6、日志文件输出

1.7、文件归档与滚动切割

1.8、自定义日志系统


一、日志整合原理

规范:项目开发不要编写System.out.println(),应该用日志记录信息

1.1、简介

  1. Spring使用commons-logging作为内部日志,但底层日志实现是开放的。可对接其他日志框架。spring5及以后 commons-logging被spring直接自己写了。
  2. 支持 jul,log4j2,logback。SpringBoot 提供了默认的控制台输出配置,也可以配置输出为文件。
  3. 虽然日志框架很多,但是我们不用担心,使用 SpringBoot 的默认配置就能工作的很好
  4. logback是默认使用的。

SpringBoot怎么把日志默认配置好的 

1、每个starter场景,都会导入一个核心场景spring-boot-starter

2、核心场景引入了日志的所用功能spring-boot-starter-logging

3、默认使用了logback + slf4j 组合作为默认底层日志

4、日志是系统一启动就要用xxxAutoConfiguration是系统启动好了以后放好的组件,后来用的。

5、日志是利用监听器机制配置好的。ApplicationListener

6、日志所有的配置都可以通过修改配置文件实现。以logging开始的所有配置。

 1.2、日志格式

系统默认日志格式:

2023-06-01T19:32:36.023+08:00  INFO 24520 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-06-01T19:32:36.023+08:00  INFO 24520 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.8]

默认输出格式:

  • 时间和日期:毫秒级精度
  • 日志级别:ERROR, WARN, INFO, DEBUG, or TRACE.
  • 进程 ID
  • ---: 消息分割符
  • 线程名: 使用[]包含
  • Logger 名: 通常是产生日志的类名
  • 消息: 日志记录的内容

注意: logback 没有FATAL级别,对应的是ERROR

通过配置文件修改日志格式:

修改后的日志打印:

2023-06-01 19:37:56.292 INFO  [main] o.a.c.c.StandardService ===> Starting service [Tomcat] 

1.3、记录日志

@Slf4j
@RestController
public class LoggingController {
    //日志记录器
    //Logger logger = LoggerFactory.getLogger(getClass());
    @GetMapping("/log")
    public String log(){
        log.info("方法成功调用");
        return "log";
    }
}

1.4、日志级别

  • 由低到高:ALL,TRACE, DEBUG, INFO, WARN, ERROR,FATAL,OFF
    • 只会打印指定级别及以上级别的日志
    • ALL:打印所有日志
    • TRACE:追踪框架详细流程日志,一般不使用
    • DEBUG:开发调试细节日志
    • INFO:关键、感兴趣信息日志
    • WARN:警告但不是错误的信息日志,比如:版本过时
    • ERROR:业务错误日志,比如出现各种异常
    • FATAL:致命错误日志,比如jvm系统崩溃
    • OFF:关闭所有日志记录
  • 不指定级别的所有类,都使用root指定的级别作为默认级别
  • SpringBoot日志默认级别是 INFO
  1. 在application.properties/yaml中配置logging.level.<logger-name>=<level>指定日志级别
  2. level可取值范围:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, or OFF,定义在 LogLevel类中
  3. root 的logger-name叫root,可以配置logging.level.root=warn,代表所有未指定日志级别都使用 root 的 warn 级别

修改日志级别:

 

1.5、日志分组

SpringBoot 预定义两个组

1.6、日志文件输出

1.7、文件归档与滚动切割

 

归档:每天的日志单独存到一个文档中。

切割:每个文件10MB,超过大小切割成另外一个文件。

  1. 每天的日志应该独立分割出来存档。如果使用logback(SpringBoot 默认整合),可以通过application.properties/yaml文件指定日志滚动规则。
  2. 如果是其他日志系统,需要自行配置(添加log4j2.xml或log4j2-spring.xml)
  3. 支持的滚动规则设置如下

配置项

描述

logging.logback.rollingpolicy.file-name-pattern

日志存档的文件名格式(默认值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz)

logging.logback.rollingpolicy.clean-history-on-start

应用启动时是否清除以前存档(默认值:false)

logging.logback.rollingpolicy.max-file-size

存档前,每个日志文件的最大大小(默认值:10MB)

logging.logback.rollingpolicy.total-size-cap

日志文件被删除之前,可以容纳的最大大小(默认值:0B)。设置1GB则磁盘存储超过 1GB 日志后就会删除旧日志文件

logging.logback.rollingpolicy.max-history

日志文件保存的最大天数(默认值:7).

1.8、自定义日志系统

 

通常我们配置 application.properties 就够了。当然也可以自定义。比如:

日志系统

自定义

Logback

logback-spring.xml, logback-spring.groovy,

logback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

如果可能,我们建议您在日志配置中使用-spring 变量(例如,logback-spring.xml 而不是 logback.xml)。如果您使用标准配置文件,spring 无法完全控制日志初始化。

最佳实战:自己要写配置,配置文件名加上 xx-spring.xml

 

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

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

相关文章

chatgpt赋能python:Python出不来图像如何解决?——Python编程经验分享

Python出不来图像如何解决&#xff1f;——Python编程经验分享 Python是一门非常强大的编程语言&#xff0c;常用于数据处理、Web后端开发、爬虫等领域&#xff0c;但有时候在开发过程中&#xff0c;你可能会遇到Python出不来图像的情况。这时候该怎么办呢&#xff1f;本文将从…

c++跨平台串口库(serial)

c跨平台串口库(serial) serial资源链接 创建工程 工程目录如下&#xff1a; .vscode&#xff1a; 使用vsocde自动生成的3rd: 里面放第三方库include&#xff1a; 放源代码的头文件src&#xff1a;放源代码 这里我创建了一个简单的demo工程&#xff0c;只有一个main.cpp。 …

双向认证证书生成过程

https://help.aliyun.com/document_detail/160093.html 如果是自签名的证书&#xff0c;那需要生成根证书 生成根证书 生成根私钥 openssl genrsa -out root.key 2048 生成根的csr文件 openssl req -new -out root.csr -key root.key Country Name (2 letter code) [XX]:cn…

springboot 本地/minio 附件下载优化

文章目录 前言一、Direct buffer memory1.1 原因分析1.2 解决方案 二、附件下载2.1 问题分析2.2 解决方案2.2.1 本地下载2.2.1 minio下载 前言 本地上传大文件内存溢出 Direct buffer memory附件下载服务端传流给前端需要将流缓存完毕才可以下载&#xff0c;导致大文件下载系统…

C语言指针:深入理解与应用

C语言指针&#xff1a;深入理解与应用 指针作为C语言的核心概念之一&#xff0c;对于学习C语言的程序员来说具有重要意义。本文将详细介绍C语言指针的基本概念、运算符、指针与数组的关系、函数指针以及指针的常见应用场景等。通过阅读本文&#xff0c;你将对C语言指针有更深入…

【Java多线程进阶】线程池详解

前言 在大量的并发任务中&#xff0c;频繁的创建和销毁线程对系统的开销是非常大的&#xff0c;多个任务执行的速度也是非常慢的。因此&#xff0c;设计出一个好的 Java 线程池就可以减少系统的开销、使程序运行速度提升。在这篇博文中&#xff0c;我将介绍 Java 线程池概念以及…

RocketMq-主从集群搭建

目录 1.服务器列表 2.下载安装包 3.node1节点修改runserver.sh文件 4. 所有节点安装jdk 5. node1节点配置RocketMQ集群 1.配置node1节点borker-a的master配置文件 2.配置node2节点配置borker-a的slave borker-a-s节点 3.配置node3节点配置borker-b的master节点 4.配置…

【Python】Python系列教程--Python3 基本数据类型(五)

文章目录 前言多个变量赋值标准数据类型Number&#xff08;数字&#xff09;数值运算数值类型实例String&#xff08;字符串&#xff09;List&#xff08;列表&#xff09;Tuple&#xff08;元组&#xff09;Set&#xff08;集合&#xff09;Dictionary&#xff08;字典&#x…

低代码开发重要工具:jvs-rules 规则引擎功能介绍(三)

一、JVS规则引擎的决策流可视化组成 决策流的可视化拼装 规则引擎是由多个组件组成的&#xff0c;这些组件共同协作实现规则的管理、执行和决策流的构建。 决策流&#xff1a;决策流是由多个业务节点连接而成的流程&#xff0c;用于实现复杂的业务逻辑。决策流中的业务节点按…

Rust安装手册

Rust 环境搭建 Rust 支持很多的集成开发环境&#xff08;IDE&#xff09;或开发专用的文本编辑器。 官方网站公布支持的工具如下&#xff08;https://www.rust-lang.org/zh-CN/tools&#xff09;&#xff1a; 本教程将使用 Visual Studio Code 作为我们的开发环境&#xff08…

NIO之Selector解读

目录 Selector 简介 为什么会出现Selector Selector 和 Channel 关系 可选择通道(SelectableChannel) Channel 注册到 Selector 选择键(SelectionKey) Selector 的使用方法 Selector 的创建 注册 Channel 到 Selector 轮询查询就绪操作 停止选择的方法 Selector 简…

全志Tina Linux下如何编译glibc库

本文整理自问答&#xff1a;https://bbs.aw-ol.com/topic/3615/ make工具 注意由于AW服务器make版本为3.8.1&#xff0c;在编译glibc高版本时候不兼容&#xff0c;所以需要更新make工具。假如服务器make版本较高&#xff0c;可以不用更新make工具。 网址 http://ftp.gnu.org/…

chatgpt赋能python:Python函数介绍

Python函数介绍 函数是Python编程中最重要的概念之一。它是一段可重用代码的集合&#xff0c;通过一个名字来暴露出来&#xff0c;可以在Python程序的多个地方调用。函数可以接收任意数量的参数&#xff0c;也可以返回值。Python中函数定义使用关键字 def。 Python函数定义 …

ChatGPT教你学Python爬虫

“ chatgpt作为一个编程助手&#xff0c;虽然不能帮我们解决一个复杂的业务需求&#xff0c;但在处理一些具体工具类需求上&#xff0c;能够快速生成我们需要的代码&#xff0c;尤其对一些编程初学者&#xff0c;不仅能借助chatgpt快速完成自己的小工具&#xff0c;还能在与cha…

硬件 TCP/IP 协议栈

目录 全硬件的TCP/IP 协议栈简介以太网接入单片机方案以太网接口芯片CH395Q 简介以太网接口芯片CH395Q 命令简介以太网接口芯片CH395Q 寄存器配置与使用移植CH395Q 源码 TCP_Client 实验TCPClient 配置流程TCPClient 实验硬件设计程序设计下载验证 WebServer 实验WebServer 简介…

chatgpt赋能python:Python编程:如何写文件到指定目录

Python编程&#xff1a;如何写文件到指定目录 Python是一种高级编程语言&#xff0c;它具有简单易学、可读性高的特点&#xff0c;并且能够应用于各种领域&#xff0c;尤其是数据科学和机器学习领域。在Python中&#xff0c;我们可以通过编写代码实现将文件写入到指定目录中。…

JavaEE(系列18) -- 文件操作I/O

前言: 我们平时所说的文件都是指硬盘上的文件,而我们之前在JavaSE阶段代码绝大部分都是围绕内存展开的,定义个变量&#xff0c;其实就是内存上申请空间。 内存和硬盘的区别: 速度&#xff1a;内存比硬盘快很多。空间&#xff1a;内存空间比硬盘小。成本&#xff1a;内存比硬盘贵…

利用CiteSpace快速锁定领域内最新研究热点并制作精美的可视化专题图

【基于Citespace和vosviewer文献计量学相关论文 】 ​ 01 文献计量学方法与应用 1. 文献计量学方法基本介绍 2. 与其他综述方法区别联系 3. 各学科领域应用趋势近况 4. 主流分析软件优缺点对比 5. 经典高分10SCI思路复盘 6. 软件安装与Java环境配置 02 主题确定、数据检…

Power BI 如何高效管理度量值和字段

内容说明 背景需求&#xff1a; 当分析场景涉及大量数据和分析度量值时&#xff0c;为了更好的区分原始数据和用于分析的度量值&#xff0c;需要合理安排和管理数据字段。 本文总结了三种方法&#xff1a; 移动度量值位置创建字段文件夹&#xff1a;子文件夹和多个文件夹创建…