【Spring Boot丨(十 )】日志

news2024/12/24 10:58:58

上文讲了 类型安全配置属性
本篇来讲一下 Spring boot 的默认日志相关

Logging

  • 🍑 概述
  • 🍏 日志格式
  • 🍐 控制台输出
  • 🥥 文件输出
  • 🥝 文件轮换
  • 🍒 文件级别

🍑 概述


  Spring Boot在所有内部日志中使用Commons Logging,但也保留默认配置对常用日志的支持,如:Java Util Logging,Log4J, Log4J2, SLF4J 和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。默认情况下,如果您使用“Starters”,会使用Logback来实现日志管理。

  Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。
在这里插入图片描述

   上图明确的告诉了我们Slf4j 就是简单的外观或抽象,它允许最终用户在部署时插入所需的日志框架 。因此,我们没必要纠结使用默认的Logback还是Log4j,直接用Slf4j 即可。至于这个日志具体是如何写到控制台或者文件的,则由Spring Boot项目中引入了什么具体的日志框架决定,默认情况下就是Logback。

🍏 日志格式


在这里插入图片描述

由上图可知,日志输出的主要元素如下:

  • 日期和时间:毫秒精度且易于排序。
  • 日志级别:ERROR、WARN、INFO、DEBUG、 或TRACE。
  • 进程 ID。
  • 分隔符 --- 用于区分实际日志消息的开始。
  • 线程名称:用方括号括起来(可能会截断控制台输出)。
  • Logger 名称:这通常使用源代码的类名(通常是缩写)。
  • 日志内容。

🍐 控制台输出


日志级别:

  日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。

  Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台。

开启DEBUG日志:

1:在运行命令后加入-- debug 标志,如:$ java -jar myapp.jar --debug

2:在配置文件application.properties 中配置 debug=true

启用调试模式时,会配置一系列核心记录器(嵌入式容器、Hibernate和Spring Boot)以输出更多信息。但是你自己应用的日志并不会输出为DEBUG级别。

开启TRACE日志:

1:在运行命令后加入--trace 标志

2:在配置文件application.properties 中配置 trace=true

  启动应用程序来启用“跟踪”模式。这样做可以为一系列核心记录器(嵌入式容器、Hibernate架构生成和整个Spring产品组合)启用跟踪日志记录。

颜色编码输出:

  如果您的终端支持 ANSI,设置颜色输出可以提高日志的可读性。您可以设置spring.output.ansi.enabled 来覆盖自动检测。

spring.output.ansi.enabled 支持的值为以下三项:

参数说明
ALWAYS启用 ANSI 彩色输出。
DETECT尝试检测ANSI着色功能是否可用。
NEVER禁用 ANSI 颜色输出。

  颜色编码是通过使用%clr 转换字来配置的。在最简单的形式中,转换器根据日志级别对输出进行着色,示例如下:

%clr(%5p)

日志级别到颜色的映射:

级别颜色
FATAL红色
ERROR红色
WARN黄色
INFO绿色
DEBUG绿色
TRACE绿色

  或者,您可以指定应该使用的颜色或样式,方法是将其提供为转换的选项。例如,要使文本变为黄色,示例如下:

%clr(%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}){yellow}

支持以下颜色和样式:

  • blue
  • cyan
  • faint
  • green
  • magenta
  • red
  • yellow

🥥 文件输出


  默认情况下,Spring Boot只将日志输出到控制台,而不会写到日志文件。如果除了控制台输出之外还想写入日志文件,则需在application.properties中设置logging.filelogging.path属性。

  • logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
  • logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=/var/log

  如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
  如果只配置 logging.path,在 /var/log文件夹生成一个日志文件为 spring.log

  默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO

注:二者不能同时使用,如若同时使用,则只有logging.file生效

提示:
  日志记录属性独立于实际的日志记录基础结构。因此,特定的配置密钥(如logback的logback.configurationFile)不由spring Boot管理。

🥝 文件轮换


  如果使用 Logback,则可以使用application.propertiesapplication.yaml 文件微调日志轮换设置。对于所有其他日志系统,需要自己直接配置轮换设置(例如,如果使用 Log4j2,则可以添加log4j2.xml或log4j2-spring.xml文件)。

轮换策略属性如下:

参数说明
logging.logback.rollingpolicy.file-name-pattern用于创建日志存档的文件名模式。
logging.logback.rollingpolicy.clean-history-on-start应用程序启动时是否应进行日志归档清理。
logging.logback.rollingpolicy.max-file-size归档之前日志文件的最大大小。
logging.logback.rollingpolicy.total-size-caplogging.logback.rollingpolicy.total-size-cap
logging.logback.rollingpolicy.max-history要保留的归档日志文件的最大数量(默认为 7)。

🍒 文件级别


  所有支持的日志记录系统都可以在Spring环境中设置记录级别(例如在application.properties中)格式为:’logging.level.* = LEVEL’ 。根日志记录程序可以使用logging_level.root进行配置。

- logging.level:日志级别控制前缀,*为包名或Logger名

  • LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

示例如下:


logging.level.root=warn   // root日志以WARN级别输出
logging.level.org.springframework.web=debug // 包下所有class以DEBUG级别输出
logging.level.org.hibernate=error //  包下所有class以error级别输出

还可以使用环境变量设置日志记录级别。例如,

LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG  // 将ORG.SPRINGFRAMEWORK.WEB 设置为`DEBUG`。

提示:
  上述方法仅适用于包级别的日志记录。由于松弛绑定总是将环境变量转换为小写,因此不可能以这种方式为单个类配置日志记录。如果需要为类配置日志记录,可以使用SPRING_APPLICATION_JSON变量。

在这里插入图片描述

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的支持就是我✍️创作的动力!					  💞💞💞

参考资料
Spring Boot 日志官方文档

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

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

相关文章

支持裸耳3D空间音频?7月12日发布,荣耀Magic系列喜迎新成员

荣耀在7月12日将举办全场景新品发布会&#xff0c;其中将正式推出荣耀新款平板 MagicPad。 荣耀官方今天上午开始预热荣耀平板 MagicPad&#xff0c;官方海报文案表明这将成为首款支持裸耳3D空间音频的平板&#xff0c;引领行业潮流。 “空间音频技术”并不陌生&#xff0c;简…

git merge 与 git rebase 的区别

文章目录 前言1、使用 merge2、使用 rebase总结 前言 首先我们要清楚&#xff0c;git merge 与 git rebase 处理的问题是一样的&#xff0c;这两个命令都用于把一个分支的变更整合进另一个分支&#xff0c;只不过他们达成同样目的的方式不同。 刚开始&#xff0c;已经存在一…

Jmeter 做接口自动化测试的这些技巧你都掌握了吗

前言 JMeter 最初被设计用于 Web 应用测试&#xff0c;但后来扩展到了其他测试领域&#xff0c;可用于测试静态和动态资源&#xff0c;如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载&#xff0c;…

DBF文件的解析介绍

1.基本介绍 DBF是Digital Beam Forming的缩写&#xff0c;“.dbf”文件扩展名代表据库处理系统所产生的数据库文件&#xff0c;起初意为保存数据的文件是一个简单的表&#xff0c;可以使用ASCII字符集添加、修改、删除或打印数据&#xff0c;随着产品变得越来越流行&#xff0…

SIN65 DM蓝牙5.2双模热插拔PCB

键盘使用说明索引&#xff08;均为出厂默认值&#xff09; 软件支持&#xff08;驱动的详细使用帮助&#xff09;一些常见问题解答&#xff08;FAQ&#xff09;首次使用步骤蓝牙配对规则&#xff08;重要&#xff09;蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

idea连接远程MySQL数据库

填写URL&#xff0c;以mysql为例 格式 jdbc:mysql://ip地址:端口号/数据库名 jdbc:mysql://127.0.0.1:3306/ldentification _Information

在 Kubernetes 上体验 EMQX 5.0 的 MQTT over QUIC 特性

引言 作为全球领先的开源分布式 MQTT Broker&#xff0c;EMQX 在 5.0 版本中引入了 MQTT over QUIC&#xff0c;将 MQTT 协议的优势与 QUIC 的特性相结合。通过充分利用 QUIC 协议低连接开销和多路复用的特点&#xff0c;MQTT over QUIC 为弱网络环境和不规则网络中的用户提供…

lib/db 标准单元分类(Standard Cells in ASIC Design)、Track定义

文章目录 drain curruntThreshold Voltage (VTH)channel lengthtrack&#xff08;Classification according to the Density&#xff09;Standard Cell Layout drain currunt Drain current (Id) uCox(W/L)[(Vgs-Vth)Vds-(1/2)Vds^2] Coxepision/tox#饱和电流计算公式&#xf…

C#上位机开发广阔前景

作为一名C#上位机开发人员&#xff0c;我可以告诉你&#xff0c;C#是一门广泛使用的编程语言&#xff0c;在软件开发领域有很多机会和前途。以下是一些关于C#上位机开发的理由&#xff1a; 广泛应用&#xff1a;C#是微软的主要开发语言之一&#xff0c;被广泛用于开发各种类型…

Linux 性能优化(网络、磁盘、内存、日志监控)

文章目录 1、CPU性能监控1.2、平均负载基础1.3、平均负载与 CPU 使用率1.4、监控命令top命令mpstat命令pidstat场景一&#xff1a;CPU 密集型进程场景二&#xff1a;I/O 密集型进程场景三&#xff1a;大量进程的场景1.5、CPU上下文切换1.6、 遇到CPU利用率高该如何排查1.7、根据…

【java】获取前一天日期

//获取前一天日期//写法一LocalDate yesterday2 LocalDate.now().minusDays(1);System.out.println(yesterday2);//写法二LocalDate yes1 LocalDate.now().plusDays(-1);System.out.println(yes1);//输入当前日期的年 月 日System.out.println(LocalDate.now().getYear());…

Redis 的 LRU 与 LFU 算法实现

一、前言 原文地址 Redis是一款基于内存的高性能NoSQL数据库&#xff0c;数据都缓存在内存里&#xff0c; 这使得Redis可以每秒轻松地处理数万的读写请求。 相对于磁盘的容量&#xff0c;内存的空间一般都是有限的&#xff0c;为了避免Redis耗尽宿主机的内存空间&#xff0c;R…

【高通WLAN】WLAN bdf如何配置支持UMC设备和TSMC设备

除了用于台积电(TSMC)设备的现有bdf文件外,软件升级中还包括新的WLAN bdf文件,以支持UMC设备。 bdf文件导入的路径是 wlan_proc\wlan\halphy_tools\host\bdfUtil\qca61x0\bdf ■ TSMC(现有):bdwlan.xxx至bdwlan.bin ■ UMC(新):bdwlanu.xxx至bdwlanu.bin 以上配置…

可以带着游泳的耳机有哪些,推荐几款可以在水下使用的游泳耳机

在夏天里游泳是一件相当舒适的运动项目&#xff0c;比起汗流浃背的健身房&#xff0c;游泳池已经成为了更多人所倾向的地方&#xff0c;因为它不仅可以起到塑性的效果&#xff0c;而且还能够让自己时长保持在舒爽的状态&#xff0c;这时就会有朋友在问&#xff0c;游泳的时候节…

IDEA介绍

集成开发环境&#xff08;IDE&#xff09;简介 集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment&#xff09;是为程序开发提供便利的应用程序。通常包括代码编辑器、编译器、调试器和图形用户界面等工具。它们集成了代码编写、分析、编译、调试等…

时间序列预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% …

基于单片机停车场刷卡收费的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;以51单片机作为主控系统&#xff1b;通过液晶显示当前时间&#xff0c;车位、剩余车位、时间等信息&#xff1b;进电机正反转表示开关门&#xff1b;按键可以设置当前时间/单价/分钟&#xff1b;RC522射频卡识别&#xff0c;当刷卡…

Qt Core学习日记——第二天QMetaClassInfo

QMetaClassInfo是QMetaObject中用于存放类信息的数据结构 QMetaClassInfo定义&#xff1a; class Q_CORE_EXPORT QMetaClassInfo { public: Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(nullptr), handle(0) {} const char *name() const; const char *value() co…

使用Jetpack Compose中的Pager构建滑动页面

Jetpack Compose是Google为Android开发者提供的一种现代化的UI工具包&#xff0c;它采用声明式UI范式&#xff0c;使得开发者能够更加简洁、直观地构建用户界面。在这篇博客中&#xff0c;我们将探讨如何使用Jetpack Compose中的Pager构建滑动页面。 什么是Pager&#xff1f; …

如何查看Linux是否开启了数据包转发功能

如果Linux主机有多块网卡&#xff0c;如果不开启数据包转发功能&#xff0c;则这些网卡之间是无法互通的。 如何开启数据包转发功能&#xff1a; echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward1 如何查看是否开启了数据包转发功能&#xff1a; …