【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging

news2024/11/22 21:51:21

全方位攻克你的技术盲区之SpringBoot整合众多日志管理系统服务starter-logging

  • 前提介绍
  • Spring默认日志文件
  • Spring的日志配置参数
    • logging.level
        • maven配置
        • properties文件
        • yaml文件
      • logging.file
        • application.yml中配置
      • logging.path
        • application.properties配置
        • application.yml配置
      • logging.patter.console
        • application.properties配置
        • application.yml配置
      • logging.pattern.file
    • 通过命令行改变日志的输出级别
      • 在application.properties
      • application.yml
      • 相同的方式使能TRACE级别的日志
      • application.properties
      • application.yml
  • 内容总结

前提介绍

Spring Boot可以使用多种日志记录工具,例如Logback、Log4J2和Java util logging等。其中,Spring Boot默认使用Logback作为日志记录工具,并将日志输出到控制台,也可以输出到文件中。您可以通过添加spring-boot-starter-logging依赖来引入Logback,而在添加其他任何Spring Boot starter时,Spring Boot都会默认引入spring-boot-starter-logging依赖,因此您无需单独添加该依赖。
在这里插入图片描述
如果想要使用Log4J2作为Spring Boot的日志记录工具,需要排除Logback JAR并添加Log4J2的依赖。

使用Logback记录日志的话,只需要在配置文件中配置日志级别,并且console默认输出ERROR、WARN和INFO级别的日志。可以通过修改logging.level属性来改变日志输出的级别,并且还可以通过配置logging.file或logging.path属性将日志输出到文件中,当文件大小达到10M时,会自动新建一个文件来记录日志。

Spring默认日志文件

Spring Boot 的日志文件名称默认为 spring.log。如果你没有设置 logging.file 属性,Spring Boot 将默认在应用程序的工作目录下生成一个名为 spring.log 的日志文件。你也可以通过指定 logging.file.name 或 logging.file.path 属性来自定义日志文件的名称和路径。
在这里插入图片描述

Spring的日志配置参数

接下来将讨论如何在application.properties、application.yml、Logback XML中配置Logback,并使用Log4j2在Spring Boot应用中进行日志配置。
在这里插入图片描述

  • logging.level.* : 可设置package前缀的日志级别。
  • logging.file : 配置日志输出文件名或绝对路径。
  • logging.path : 配置日志路径。如果未配置logging.file,将默认使用spring.log。
  • logging.pattern.console : 定义console内日志的样式。
  • logging.pattern.file : 定义文件中日志的样式。
  • logging.pattern.level : 定义渲染不同级别日志的格式。默认为%5p。
  • logging.exception-conversion-word : 定义日志发生异常时的转换字。
  • PID : 当前进程的ID。

logging.level

logging.level:设置日志级别,可使用TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。可使用root级别和package级别来控制日志输入级别。创建具有以下依赖关系的应用程序。

maven配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

properties文件

使用src\main\resources\application.properties配置日志级别

logging.level.root= WARN
logging.level.org.springframework.security= DEBUG
logging.level.org.springframework.web= ERROR
logging.level.org.hibernate= DEBUG
logging.level.org.apache.commons.dbcp2= DEBUG 

yaml文件

使用src\main\resources\application.yml

logging:
  level:
    root: WARN        
    org:
      springframework:
        security: DEBUG
        web: ERROR    
      hibernate: DEBUG        
      apache:
        commons:
          dbcp2: DEBUG 

logging.file

Spring Boot默认将日志输出到控制台。如果需要将日志写入文件,可以配置logging.file或logging.path属性。logging.file属性可用于定义日志文件名和路径。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.file = mylogfile.log 

mylogfile.log可在根目录中创建,或以concretepage/mylogfile.log的形式在相对根目录下创建。另外,可为日志文件指定绝对路径。

application.yml中配置

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  file: mylogfile.log  

logging.path

配置logging.path或logging.file属性可将日志写入文件。logging.path属性用于定义日志文件夹路径。可在application.properties文件中进行配置。

application.properties配置

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs  

spring.log日志文件将被创建在concretepage/logs文件夹下,该文件夹相对于项目根目录的路径。同时,也可以通过配置绝对路径的方式来定义日志文件的位置。

application.yml配置

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  path: concretepage/logs  

logging.patter.console

我们可以通过设置 logging.pattern.console 属性,来改变输出到控制台的日志展示样式。具体展示样式包括时间、日志级别、线程名、日志名、以及消息。您可以自由调整这些样式,以满足个人偏好。

application.properties配置

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n

application.yml配置

logging:
  level:
    org:
      springframework:
        security: DEBUG
    hibernate: DEBUG
  pattern:
    console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n' 

logging.pattern.file

为了使文件中的日志样式更加符合我们的需求,我们需要设置logging.pattern.file属性。这可以通过以下步骤实现:

  1. 通过logging.file或logging.path属性,将日志记录到文件中。可以根据实际需求,选择logging.file指定日志文件名和路径,或logging.path指定日志文件夹路径,Spring Boot将自动创建一个名为spring.log的日志文件。

  2. 编辑application.properties文件,添加以下内容:

logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n

该属性设置了一个包含时间戳、线程、日志级别、日志名和消息的样式。您可以根据实际需求进行调整。

  1. 运行应用程序,新的日志样式将应用于记录在文件中的日志。

注意,在实际运行中,您还可以使用其他的日志属性和样式进行设置,以满足您的实际需求。此外,对于较大的日志文件,您可以考虑使用日志文件的滚动策略来降低文件大小。

logging.level.org.springframework.security= DEBUG
logging.level.org.hibernate= DEBUG
logging.path = concretepage/logs
logging.pattern.file= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n
logging.pattern.console= %d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n  

使用logging.path属性可以在应用程序的根目录下创建concretepage/logs目录,并默认使用spring.log作为文件名保存日志文件。另外,您可以通过设置logging.pattern.console属性来指定控制台上的日志样式,以便更好地显示日志信息。

通过命令行改变日志的输出级别

Sping Boot 默认输出ERROR , WARN , INFO 级别的日志。我们可以通过命令行使能DEBUG ,TRACE级别的日志输出,效果是跟配置文件一样的。想象我们有一个名为my-app.jar的可执行的JAR包我们可以在启动应用是使能DEBUG级别日志输出。

java -jar my-app.jar --debug  

在application.properties

debug=true  

application.yml

debug:true  

相同的方式使能TRACE级别的日志

java -jar my-app.jar --trace  

application.properties

trace=true

application.yml

trace: true

内容总结

spring-boot-starter-logging是Spring Boot提供的一个用于配置日志相关依赖的starter,它提供了对常见的日志框架的支持,包括Logback、Log4j2和Java Util Logging(JUL)。

使用spring-boot-starter-logging可以方便地配置和使用日志框架,并且能够自动适配多种不同的日志框架,使得开发者能够快速地切换和选择适合自己的日志框架。

在使用spring-boot-starter-logging时,可以通过配置文件来自定义日志级别、日志格式和输出目标等信息。比如,可以使用application.properties配置文件来配置日志输出的格式:

logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n

该配置将格式化控制台输出的日志信息,以小时:分钟:秒.毫秒、线程id、日志级别、logger名称和消息的形式输出。

此外,Spring Boot还提供了对于常见的日志框架的自动配置,如自动配置Logback日志框架,即可以使用logback.xmllogback-spring.xml进行配置,这些配置文件需要放置在classpath路径下,Spring Boot会自动地读取和解析这些配置文件来进行日志的记录。

总之,spring-boot-starter-logging为开发者提供了一个便捷、易用的日志配置和使用解决方案,能够让开发者更加专注于业务代码的开发,而不必花费过多的精力来配置和处理日志相关的细节问题。

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

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

相关文章

基于DBACAN的道路轨迹点聚类

目录 前言道路栅格化轨迹聚类参考资料 前言 很多针对道路轨迹的挖掘项目前期都需要对道路进行一段一段的分割成路段&#xff0c;然后对每一个路段来单独进行考察&#xff0c;如设定路段限速标识&#xff0c;超速概率等&#xff0c;如何对道路进行划分&#xff0c;其实是一个很…

华为OD机试真题 JavaScript 实现【滑动窗口】【2023 B卷 100分】,附详细解题思路

一、题目描述 有一个N个整数的数组&#xff0c;和一个长度为M的窗口&#xff0c;窗口从数组内的第一个数开始滑动直到窗口不能滑动为止&#xff0c;每次窗口滑动产生一个窗口和&#xff08;窗口内所有数和和&#xff09;&#xff0c;求窗口滑动产生的所有窗口和的最大值。 二…

python: read excel

""" Insurance。py edit&#xff1a; geovindu,Geovin Du,涂聚文 date 2023-06-13 保险类 """import sys import osclass Insurance:"""保险类"""def __init__(self, InsuranceName, InsuranceCost, IMonth):&quo…

STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例)

使用QUADSPI读写W25Q64 QUADSPI介绍硬件连接双闪存模式禁止双闪存模式使能 QUADSPI命令序列指令阶段地址阶段交替字节阶段空指令周期阶段数据阶段 QUADSPI主要信号接口协议模式单线SPI模式双线SPI模式四线SPI模式 使用QUADSPI操作W25Q64发送命令函数状态轮询函数读ID函数QUADSP…

应用案例 | FG-200:通过Modbus将FF H1设备集成到DCS系统

一 背景 FOUNDATION Fieldbus&#xff08;FF&#xff09;协议是一种现代化的数字通信协议&#xff0c;其中FF H1协议在大型的化工、电力、石油等流程工业领域得到了广泛应用。由于FF H1协议具有诸多优势&#xff0c;例如高度可靠性、高速数据传输、强大的诊断能力和灵活的设备…

第4章 总体设计

文章目录 第5章 总体设计5.1 设计过程例题 5.2 设计原理5.2.1 模块化模块化的优势 例题5.2.2 抽象5.2.3 逐步求精求精实际上是细化的过程与抽象的关系 5.2.4 信息隐藏和局部化5.2.5 模块独立模块独立的重要性模块独立的定性标准度量耦合① 无直接耦合② 数据耦合③ 标记耦合④ …

MySQL数据库基础 11

第十一章 数据处理之增删改 1. 插入数据1.1 实际问题1.2 方式1&#xff1a;VALUES的方式添加1.3 方式2&#xff1a;将查询结果插入到表中 2. 更新数据3. 删除数据4. MySQL8新特性&#xff1a;计算列 1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入…

8.1 正弦波振荡电路(2)

四、石英晶体正弦波振荡电路 石英晶体谐振器&#xff0c;简称石英晶体&#xff0c;具有非常稳定的固有频率。对于振荡频率稳定性要求高的电路&#xff0c;应选用石英晶体作选频网络。 1、石英晶体的特点 将二氧化硅&#xff08; SiO 2 \,\textrm {SiO}_2\, SiO2​&#xff0…

华为OD机试真题 JavaScript 实现【找终点】【2023 B卷 100分】,附详细解题思路

一、题目描述 给定一个正整数数组&#xff0c;设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始&#xff0c;正好走到数组最后一个成员&#xff0c;所使用的最少步骤数。 要求&#xff1a; 第一步必须从第一元素开始&#xff0c;且1 < 第一步的步长 &…

测试 4 年,从外包 15K 跳槽去字节 38K+12,啃完这份笔记你也可以

粉丝小王转行做测试已经是第4个年头&#xff0c;一直是一个不温不火的小职员&#xff0c;本本分分做着自己的事情&#xff0c;觉得自己的工作已经遇到了瓶颈&#xff0c;一个偶然的机会&#xff0c;获得了一份软件测试全栈知识点学习笔记&#xff0c;通过几个月的学习&#xff…

虚拟机(VMware )部署

一、VMware 概述&#xff1a; VMware是一家提供虚拟化解决方案的领先公司&#xff0c;其产品被广泛应用于企业和个人用户的计算环境中。VMware的虚拟化技术可以将物理计算资源&#xff08;如服务器、存储和网络&#xff09;抽象成虚拟化的资源&#xff0c;从而提供更高的灵活性…

路径规划算法:基于黑猩猩优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

MySQL之流程控制,索引

一、条件语句 if 条件语句 delimiter // CREATE PROCEDURE proc_if () BEGINdeclare i int default 0;if i 1 THENSELECT 1;ELSEIF i 2 THENSELECT 2;ELSESELECT 7;END IF;END // delimiter ; 二、循环语句 while循环 delimiter // CREATE PROCEDURE proc_while () BEGI…

测试用例设计背后的底层逻辑你一定不知道

目录 前言 1、万物皆可测 2、用例的本质 3、业务建模 4、其他一些测试法 总结&#xff1a; 前言 测试用例是每位测试人员都绕不开的话题&#xff0c;也是大家习以为常的事情。几乎所有测试相关的公众号、博客、专栏&#xff0c;都会提及测试用例&#xff0c;由此可见它的…

华为OD机试真题 JavaScript 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

一、题目描述 如果矩阵中的许多系数都为零&#xff0c;那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省&#xff0c;并且在许多大的实践中都会出现矩阵稀疏的问题。 给定一个矩阵&#xff0c;现在需要逐行和逐列地扫描矩阵&#xff0c;如果某一…

备战金九银十,互联网大厂最全“Java 面试宝典 +Java 核心知识集”汇总

搬砖也有好几年了&#xff0c;本想在金三银四跳槽来着&#xff0c;结果我想你们应该猜到了&#xff0c;于是计划着下半年跳槽试试&#xff0c;算是提前为金九银十做准备吧&#xff01; 现在着手准备着以防万一自己措手不及&#xff0c;这不&#xff0c;这几天刚整理出炉的两份…

强化学习笔记-11 Off-policy Methods with Approximation

前几章我们讨论了off-policy方式&#xff0c;其同on-policy方式最大的不同之处在于其在训练所采取的动作&#xff0c;是根据behavior policy进行决策的&#xff0c;而不是根据target policy。这种方式的好处在于兼顾了exploitation and exploration。本节将讨论如何通过模型近似…

Spring MVC 的创建连接和使用

目录 前言&#xff1a; MVC 是什么&#xff1f; 1. Spring MVC 项目的创建和连接&#xff1a; 1.1 创建 1.2 连接 2. RequestMapping 注解使用详析&#xff1a; 2.1 指定请求类型&#xff1a; 2.1.1 指定 GET 请求 2.1.2 指定 POST 请求 3. 参数的获取与传递&#xff1a; 3.1 传…

CTR预估之WideDeep系列模型:DeepFM/DCN

前言 在CTR预估中&#xff0c;FM系列模型使用浅层网络&#xff08;线性模型&#xff09;&#xff0c;让模型自己学习特征组合交互&#xff0c;为显式建模的方式&#xff1b;而DNN系列模型使用深层网络&#xff0c;隐式挖掘模型的高阶特征交互。 本文继续介绍结合这两者优点的…