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

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

前提介绍

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配置

xml

复制代码

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

properties文件

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

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

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属性可用于定义日志文件名和路径。

properties

复制代码

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

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

application.yml中配置

yaml

复制代码

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

logging.path

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

application.properties配置

yaml

复制代码

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

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

application.yml配置

yaml

复制代码

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

logging.patter.console

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

application.properties配置

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配置

yaml

复制代码

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文件,添加以下内容:

perl

复制代码

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

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

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

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

ini

复制代码

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级别日志输出。

shell

复制代码

java -jar my-app.jar --debug

在application.properties

ini

复制代码

debug=true

application.yml

lua

复制代码

debug:true

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

css

复制代码

java -jar my-app.jar --trace

application.properties

ini

复制代码

trace=true

application.yml

vbnet

复制代码

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配置文件来配置日志输出的格式:

perl

复制代码

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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
10月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1433 3
|
8月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1323 2
Spring Boot 3.x 微服务架构实战指南
|
9月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
2924 1
|
9月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1640 5
|
11月前
|
机器学习/深度学习 XML Java
【spring boot logback】日志logback格式解析
在 Spring Boot 中,Logback 是默认的日志框架,它支持灵活的日志格式配置。通过配置 logback.xml 文件,可以定义日志的输出格式、日志级别、日志文件路径等。
1920 5
|
11月前
|
运维 安全 数据可视化
日志审查安排工具实战攻略:中小团队如何通过日志审查安排工具建立可控、安全的审查机制?
在审计敏感时代,日志审查安排工具成为安全运维与合规管理的关键利器。它实现审查任务的流程化、周期化与可视化,支持多系统协作、责任到人,确保“可控、可查、可追”的日志治理。工具如板栗看板、Asana、Monday 等提供任务调度、问题闭环与合规对接能力,助力企业构建高效、透明的日志审查体系,提升安全与合规水平。
|
11月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
321 2
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
1078 4
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
605 9