Spring Boot 日志处理

news2025/1/13 17:43:09

Spring Boot 日志处理

Spring Boot 是一个非常流行的 Java 开发框架,它提供了简洁的配置和强大的开发工具。日志是应用程序中必不可少的一部分,因为它可以帮助开发人员进行调试和故障排除。Spring Boot 提供了多种日志框架,本文将重点介绍如何使用 Spring Boot 处理日志。

img

Spring Boot 默认日志框架

Spring Boot 默认使用 Logback 作为日志框架,这是一个灵活的、高效的、可扩展的日志框架。Logback 支持多种日志级别,包括 TRACE、DEBUG、INFO、WARN 和 ERROR。默认情况下,Spring Boot 将日志级别设置为 INFO。

Spring Boot 使用 Logback 的默认配置文件 logback-spring.xml,这个文件位于 src/main/resources 目录下。默认配置文件的内容如下:

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProfile name="dev">
        <logger name="com.example" level="DEBUG"/>
    </springProfile>
</figuration>

这个配置文件包含了一个 include 元素,它引用了 Spring Boot 的默认配置文件 base.xmlspringProfile 元素用于指定不同的配置文件,这里的 dev 表示开发环境。在 dev 环境中,logger 元素指定了一个名为 com.example 的日志记录器,日志级别为 DEBUG。这个配置文件的作用是输出 com.example 包下的 DEBUG 级别日志。

日志输出格式

Logback 支持多种日志输出格式,包括默认格式和自定义格式。默认格式包含时间戳、日志级别、类名、方法名和日志信息。可以使用 %d%level%logger%method%msg 等占位符来定义日志输出格式。例如,下面的配置将日志输出格式设置为时间戳、日志级别、类名、方法名和日志信息:

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProfile name="dev">
        <logger name="com.example" level="DEBUG"/>
    </springProfile>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

这个配置中,定义了一个名为 CONSOLE 的控制台输出器,它使用了一个自定义的输出格式。输出格式中使用了 %d 表示时间戳、%thread 表示线程名、%level 表示日志级别、%logger{36} 表示类名、%msg 表示日志信息。%n 表示换行符。这个输出格式会输出类似于下面的日志:

2023-05-23 12:30:45.123 [main] INFO  com.example.App - Application started successfully.

日志级别

Logback 支持多种日志级别,包括 TRACE、DEBUG、INFO、WARN 和 ERROR。默认情况下,Spring Boot 将日志级别设置为 INFO,这意味着 TRACE 和 DEBUG 级别的日志将不会输出。可以在配置文件中使用 logger 元素来设置不同包下的日志级别,例如:

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProfile name="dev">
        <logger name="com.example" level="DEBUG"/>
    </springProfile>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

这个配置文件中,logger 元素设置了 com.example 包下的日志级别为 DEBUG,这意味着这个包下的 TRACE、DEBUG、INFO、WARN 和 ERROR 级别的日志都会输出。root 元素指定了默认的日志级别为 INFO,这意味着除了 com.example 包下的日志之外,其他包下的 TRACE 和 DEBUG 级别的日志都不会输出。

日志文件

除了输出到控制台,Logback 还可以将日志输出到文件中。可以使用 RollingFileAppender 来实现日志文件的滚动。

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProfile name="dev">
        <logger name="com.example" level="DEBUG"/>
    </springProfile>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

这个配置文件中,定义了一个名为 FILE 的日志文件输出器。file 元素指定了日志文件的路径和名称,rollingPolicy 元素指定了日志文件的滚动策略,这里使用了基于时间的滚动策略,每天一个日志文件,最多保留 30 天的日志文件。encoder 元素同样定义了输出格式。在这个配置文件中,日志将输出到 ${LOG_PATH}/app.log 文件中,${LOG_PATH} 是一个占位符,它会被替换成实际的日志文件路径。如果想要在生产环境中使用日志文件,可以将 ${LOG_PATH} 替换成实际的日志文件路径。

使用其他日志框架

除了 Logback,Spring Boot 还支持多种其他的日志框架,包括 Log4j2 和 JDK Logging。可以在 pom.xml 文件中添加相应的依赖来使用其他日志框架。例如,如果想要使用 Log4j2,可以添加以下依赖:

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

添加依赖之后,需要在配置文件中配置相应的日志框架。例如,如果想要使用 Log4j2,可以添加以下配置:

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProfile name="dev">
        <logger name="com.example" level="DEBUG"/>
    </springProfile>

    <appender name="CONSOLE" class="org.apache.logging.log4j.core.appender.ConsoleAppender">
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </layout>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

这个配置文件中,使用了 Log4j2 的控制台输出器。与 Logback 不同的是,Log4j2 使用了 <layout> 元素来定义输出格式。其他的配置与 Logback 类似。

总结

日志是应用程序中必不可少的一部分,它可以帮助开发人员进行调试和故障排除。Spring Boot 提供了多种日志框架,包括 Logback、Log4j2 和 JDK Logging。

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

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

相关文章

Spring Cloud Feign 是什么?如何使用它来简化 RESTful 调用?

Spring Cloud Feign 是什么&#xff1f;如何使用它来简化 RESTful 调用&#xff1f; 在分布式系统中&#xff0c;服务之间的通信是非常常见的场景。通常情况下&#xff0c;服务之间的通信是通过 RESTful API 实现的。但是&#xff0c;手动编写 RESTful 调用代码非常繁琐&#…

python---变量(1)

EG:计算方差 1.先把这一组数的平均值计算出来&#xff08;后面会反复使用&#xff09; 2.针对每个数字&#xff0c;分别计算数字和平均值的差&#xff0c;再平方。 3.把2中的平方值相加 4.总和/&#xff08;项数-1&#xff09; 下面我们开始实现这个代码&#xff01; 代码运行…

OpenPCDet系列 | 7.1 KITTI数据集测试流程predicted_boxes预测

文章目录 AnchorHeadTemplate.generate_predicted_boxes部分 AnchorHeadTemplate.generate_predicted_boxes部分 测试流程的结构图如下所示&#xff1a; generate_predicted_boxes函数一开始的数据传入为&#xff1a; 首先对于各类预测的特征图进行重新reshape处理&#x…

Redis配置及优化

一、关系数据库和非关系型数据库 1、关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言…

S20360-SRS科尔摩根KOLLMORGEN

​ S20360-SRS科尔摩根KOLLMORGEN 电机驱动器是一种必不可少的设备&#xff0c;可为步进电机提供所需的电压和电流&#xff0c;使其平稳运行。步进电机是一种步进式转动的直流电机&#xff0c;它无法直接接到直流或交流电源上工作&#xff0c;必须使用专用的驱动电源(步进电机驱…

HTML常见的字符实体汇总

HTML字符实体&#xff0c;做开发的小伙伴们都知道&#xff0c;HTML有一些预留字符&#xff0c;浏览器在解析时不能正确的显示&#xff0c;这个时候我们就需要使用字符实体进行替换。同时&#xff0c;有一些键盘上找不见的符号我们也可使使用字符实体进行替换&#xff0c;如下是…

达梦分区表的使用

在大型的企业应用或企业级的数据库应用中&#xff0c;要处理的数据量通常达到TB级&#xff0c;对于这样的大型表执行全表扫描或者DML操作时&#xff0c;效率是非常低的。 为了提高数据库在大数据量读写操作和查询时的效率&#xff0c;达梦数据库提供了对表和索引进行分区的技术…

盘点界面控件DevExpress WinForms的几大应用程序主题

DevExpress WinForm控件包含了50个自定义皮肤&#xff0c;其中涵盖了Microsoft Office和Windows 11启发式的应用程序主题。 PS&#xff1a;DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建…

DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟实践技术应用

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

vue3+el-menu实现路由刷新左侧菜单栏保持选中状态

问题描述&#xff1a; 使用el-menu 实现管理系统左侧菜单栏的时候&#xff0c;刷新页面&#xff0c;菜单栏的选中状态消失 解决方案&#xff1a; 给 el-menu 加上 :default-active"this.$route.path" <el-menu :default-active"this.$route.path" …

雅思倒计时一个月|阅读准备笔记(三)

雅思阅读真经总纲。 读了一个星期 True|False|Not Given 这类题不太清楚&#xff0c;书里面有方法很有效 深呼吸过渡到下一篇阅读&#xff0c;不用急忙去下一篇 技巧一&#xff1a;拿到文章先读题目 看文章之前先读题目&#xff01;&#xff01;&#xff01;并且划一下题目关…

【头歌实训】【基于 Logisim 的 RISC-V 处理器设计】第二关-32个寄存器读写

好恶心的题&#xff0c;手连麻了 一、题目 考虑到寄存器文件的重要性&#xff0c;为基于 Logisim 实现单周期 RV32I 处理器&#xff0c;本关卡需实现一个寄存器文件部件。由于 0 号寄存器之外的 RV32I 寄存器操作方式类似&#xff0c;寄存器文件包含 32 个 32 位寄存器&#x…

chatgpt赋能Python-python_idle怎么撤销

Python Idle撤销操作&#xff1a;简易指南 作为一名有10年Python编程经验的工程师&#xff0c;我深知Python Idle在编程中的重要性。当你在编写Python代码时&#xff0c;难免会犯一些错误&#xff0c;此时“撤销”操作是非常有用的。在本篇文章中&#xff0c;我将为您介绍Pyth…

苹果手机微信分身怎么弄?学会这招不求人!

案例&#xff1a;想要把生活与工作分开&#xff0c;所以我创建了两个微信&#xff0c;想问下怎么样可以双开微信&#xff1f; 【求解&#xff01;我弄了两个微信号&#xff0c;目的是区分生活与工作&#xff0c;不想要私人账号加太多陌生人。但是微信账号老是要切换才能看到信…

SpringRetry重试机制(3秒上手)

目录 前言一、SpringRetry的使用1.1 引入依赖1.2 开启重新机制1.3 3 在方法上添加Retryable1.3.4 编写重试失败后的执行的方法测试 前言 SpringRetry重试机制在实际工作中的场景&#xff0c;比如: 发送消息失败&#xff0c;需要重新发送。调用远程服务失败&#xff0c;需要重…

5.2 在操作系统上安装部署HAProxy

HAProxy可以在各种主流的Linux发行版、主流的Unix操作系统&#xff08;如Fredsd、Solaris&#xff09;安装和稳定高效的运行&#xff0c;从HAProxy提供的安装文档“INSTALL”上&#xff0c;可以获得这些信息&#xff0c;如图5-3所示。 图5- 3 有两种安装HAProxy的方法&#xff…

Java | 一分钟掌握定时任务 | 8 - XXL-Job分布式定时任务

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 java定时任务的框架可真是多啊&#xff0c;XXL-JOB也是一个分布式任务…

开源进展|WeCross v1.3.0发布,支持适配FISCO BCOS v3.0

WeCross是微众银行自主研发并完全开源的区块链跨链协作平台&#xff0c;致力于促进跨行业、机构和地域的跨区块链信任传递和商业合作&#xff0c;有助于实现异构区块链系统之间安全可信的互操作。 WeCross v1.2.0自发布以来&#xff0c;得到了众多社区伙伴的支持和反馈。目前&…

内网渗透(八十)之搭建额外域控

搭建额外域控 我们在之前搭建完成Windows Server 2012 R2 域控的基础上搭建一个额外的域控。多个域控的好处在于,当其中有域控出现了故障,仍然能够由其他域控来提供服务。选择一台Windows Server 2012 R2 服务器作为额外域控,主机名为DC2. 首先在DC2上配置IP地址为192.168…

如何有效控制城镇供水管网漏损

漏损问题是影响城镇供水管网稳定与可靠运行的重要问题。其中&#xff0c;城镇供水管网运行中&#xff0c;一旦存在漏损情况不仅会对供水管网的供水水质产生影响&#xff0c;导致其水质降低&#xff0c;而且会出现供水压力与供水量减少等变化&#xff0c;对供水企业的供水服务质…