SpringBoot整合logback日志框架详解(提供Gitee源码)

news2024/11/18 11:41:43

前言:本篇博客主要介绍如何把主流的日志框架快速整合到目前的SpringBoot框架中,对六种日志等级进行介绍以及使用方法。

目录

一、日志级别 

1、TRACE

2、DEBUG

3、INFO

4、WARN

5、ERROR

6、FATAL

二、导入pom.xml依赖

三、application.yml配置

四、logback-spring.xml配置

五、单元测试

六、日志文件

七、Gitee源码


一、日志级别 

日志级别优先程度:FATAL>ERROR>WARN>INFO>DEBUG>TRACE。

1、TRACE

最低级别的日志,用于记录程序执行的细节和内部状态,默认情况下该日志不会被输出。

2、DEBUG

该级别的日志,默认情况下会打印一些调试时候的信息到终端进行输出,并不会归档在日志文件当中。

3、INFO

该级别的日志,用于输出程序正常运行状态输出的信息,例如程序的初始化,该日志是默认输出的,除非修改配置才不会进行输出到日志中。

4、WARN

该级别的日志,用于输出程序处理中遇到一些非法数据或者某些可能的异常情况,这种错误不会影响到程序的正常运行。

5、ERROR

该级别的日志,用于记录程序发生了一些错误或异常,但是不会影响到整个程序的继续运行,最好尽快处理,有可能会出现更严重的后果。

6、FATAL

该级别的日志,用于输出严重的错误信息,表示程序已经无法正常运行,需要立即处理。

目前常用的就四个级别,由高到低分别是ERROR、WARN、INFO、DEBUG,在SpringBoot框架中可以控制打印输出的日志级别,例如配置成了INFO级别的日志,那么在INFO级别以下的日志将不会被打印出来。

二、导入pom.xml依赖

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>

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

三、application.yml配置

对于com.example包中所有的类,日志级别为info,只会打印info级别及以上的日志。

对于org.springframework包中所有的类,日志级别为warn,只会打印warn级别及以上的日志。

对项目自己的代码(com.example),设置一个较低的日志级别(info),这样可以打印更多的日志用于调试和定位问题。

对第三方框架(org.springframework),设置一个较高的日志级别(warn),只打印关键信息,不打印太多的日志减少日志量。

logging:
  level:
    com.example: info
    org.springframework: warn

四、logback-spring.xml配置

所有的配置信息以及注释都在代码中体现了,复制即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
    <contextName>logback</contextName>
    <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
    <property name="LOG_HOME" value="${log.dir:-logs}" />
    <property name="log.path" value="log"/>

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <!--<charset>UTF-8</charset>-->
        </encoder>
    </appender>

    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${log.path}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日期切分-->
            <fileNamePattern>${LOG_HOME}/${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--保留30天-->
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </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="console"/>
        <appender-ref ref="file"/>
    </root>

    <!-- 包级别 打印sql,level改成debug-->
    <logger name="org.hibernate.SQL" level="info" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </logger>
</configuration>

五、单元测试

在类上面需要打上@Slf4j注解,这个注解是lombok提供的。

@SpringBootTest
@Slf4j
class LogbackApplicationTests {

    @Test
    void contextLoads() {
        log.debug("debug级别日志");
        log.info("info级别日志");
        log.warn("warn级别日志");
        log.error("error级别日志");
    }

}

控制台输出的结果

六、日志文件

会产生一个.log文件。

 具体打印内容如下

七、Gitee源码

SpringBoot整合logback日志

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

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

相关文章

seatunnel-2.3.2 doris数据同步到hive(cdh-6.3.2)首次运行踩坑记录

seatunnel-2.3.2 doris数据同步到hive(cdh-6.3.2)首次运行报错解决&#xff0c;解决的报错如下&#xff1a; 1、java.lang.NoClassDefFoundError: org/apache/hadoop/hive/metastore/api/MetaException 2、java.lang.NoClassDefFoundError: org/apache/thrift/TBase 3、java.la…

arcgis的属性显示bug

arcgis中&#xff0c;右键图层属性可以查看图层的属性信息&#xff0c;比如坐标系、波段数、行列数等。 但是今天实验的时候发现&#xff0c;这个属性中显示的波段最大最小值并非真值。 该图层实际范围为&#xff1a;30~711。 在arcgis属性中&#xff0c;显示范围为0~651。 在…

常用傅里叶变换对 傅里叶变换性质

记录下常用的傅里叶变换对 1. 对称性 2. 尺度变化性 根据上述性质求解&#xff1a; 上述函数可以理解为&#xff0c;cos(wt)的振幅是随着f(t)变化的&#xff0c;这个叫做调幅&#xff08;幅度受到了调制&#xff09;&#xff0c;不过一般发射的时候&#xff0c;还会发个载波&am…

【SQL应知应会】行列转换(二)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 行列转换 • Mysql版 前言一、MySQL行列转换1.数据…

SATA 和 ESATA 数据线针脚定义

esata定义 eSATA provides a variant of SATA for external connectivity. It uses a more robust connector, longer shielded cables, and stricter electrical standards. The protocol and logical signaling are identical to internal SATA. eSATA was standardized in 2…

【企业架构框架】SOGAF 通用实体框架 (CoE)

Salesforce 运营、治理和架构框架 (SOGAF) 将 MIT-CISR 企业架构框架应用于 Salesforce 实施和程序。 介绍 为共同实体&#xff08;即卓越中心&#xff09;制定一个明确的定义是很棘手的。转换程序中的通用实体 (CoE) 有多种名称&#xff1a; “卓越中心”、“C4E”、“专业中心…

MYSQL-UNION

语法: UNION 操作符用来合并两个 SELECT 语句的结果 SELECT statement UNION [DISTINCT | ALL] SELECT statement UNION 中的 SELECT 语句中的列数、列顺序必须相同 UNION是双目操作符,需要两个SELECT语句作为操作数,UNION后面可以接DISTINCT或者ALL 如果不写DISTINCT或者…

【已解决】Nacos 2.0.2启动异常以及正常启动后账号密码错误问题解决

1.正常解压压缩文件后&#xff0c;在bin目录下直接双击startup.cmd启动Nacos(或bin目录下命令行输入startup.cmd,新版本需要输入startup,cmd -m standalone)&#xff0c;发现启动报错。 报错信息我们可以看到大量的sql错误&#xff0c;其中不乏缺少表&#xff0c;jdbc连接异常…

session和token

一、使用HttpSession接口的setAttribute()方法将cookie保存到客户端的浏览器中 二、单点登录逻辑 1、客户端服务有一个过滤器&#xff0c;先判断有没有重定向回来的token值&#xff08;过去session用&#xff0c;没有也没关系&#xff09; 2、客户端过滤器再判断session中有没…

使用nodejs操作postgresql

环境准备 1 navicat premium 2 postgresql 14 装完上述软件后&#xff0c;远程连接上之后如下&#xff1a; 自己建立一个用户表users,然后随机生成一些数据即可 步骤 这里我将项目放到了gticode里&#xff0c;可以下载下来使用 https://gitcode.net/wangbiao9292/nodejs-p…

基于物联网、区块链技术的质量管控防伪溯源系统源码

一物一码防伪溯源系统能准确获取产品生产经营各个环节的真实信息&#xff0c;利用物联网、云计算 、区块链、人工智能、5G等先进技术&#xff0c;结合特有的码码关联和RSA加密验证技术&#xff0c;建立区块链的“身份证”&#xff0c;针对产品生长到销售各环节的质量安全数据进…

二、1什么是面向对象编程?

你好&#xff0c;我是程序员雪球&#xff0c;接下来与你一起学习什么是面向对象编程。 面向对象编程是一种编程风格。它以类或对象作为组织代码的基本单元&#xff0c;并将封装&#xff0c;抽象&#xff0c;继承&#xff0c;多态四个特性&#xff0c;作为代码设计的实现基石。 …

Spring Boot 中的 @RabbitListenerContainerFactory 注解

Spring Boot 中的 RabbitListenerContainerFactory 注解 1. 什么是 RabbitListenerContainerFactory 在 Spring Boot 中&#xff0c;我们可以使用 RabbitListener 注解来监听 RabbitMQ 中的消息。RabbitListener 注解会自动创建一个监听器容器&#xff0c;用于接收和处理消息…

Leetcode-每日一题【876.链表的中间结点】

题目 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5]输出&#xff1a;[3,4,5]解释&#xff1a;链表只有一个中间结点&#xff0c;值为 3…

云贝餐饮连锁独立版 v2.6.1+公众号+小程序端+抖音端端+全插件免授权安装使用教程

云贝餐饮连锁版这系统应该持续做好多年了比较完善&#xff0c;以前的版本都需要授权一直没使用&#xff0c;整体测试下感觉从体验上还有逻辑设计上都非常不错&#xff0c;首页、会员中心支持DIY装修&#xff0c;配送支持多种平台对接&#xff0c;基本上餐饮行业需要的功能都能满…

Plant, Cell Environment:DAP-seq技术在ZmEREB57调控OPDA合成提高玉米耐盐性研究中的应用

茉莉酸类化合物&#xff08;JAs&#xff09;是植物中普遍存在的一类植物激素&#xff0c;在非生物胁迫响应中发挥重要作用。12-氧-植物二烯酸&#xff08;OPDA&#xff09;可通过α-亚麻酸&#xff08;ALA&#xff09;代谢途径合成JA&#xff0c;是一种重要的JA前体分子。APETA…

DNSPod十问朱智:为什么商场越来越像美食中心?

本期嘉宾 朱智 赢商tech副总裁 朱智&#xff0c;赢商tech副总裁兼首席产品官。线下大数据服务的领军人物&#xff0c;福布斯中国“30under30”人物&#xff0c;拥有10余年线下商业大数据服务经验&#xff0c;致力于商业地产数智化升级领域&#xff0c;服务了包括新城集团、新…

【Linux系统编程】Linux权限理解 及 权限管理

文章目录 前言1. Linux权限的概念2. Linux权限管理2.1 文件类型2.2 Linux用户分类及切换用户分类普通用户—>rootroot—>普通用户普通用户之间的切换单条指令的提权 2.3 用户角色划分/文件访问者的分类&#xff08;人&#xff09;2.4 文件类型和访问权限&#xff08;事物…

windows环境部署nacos注意事项

1.nacos与 eureka部署方式有所不同&#xff0c;nacos需要到GitHub去下载&#xff0c;下载地址&#xff1a;https://github.com/alibaba/nacos&#xff0c;下载好后将文件放至项目中 2.需要将nacos用到的数据文件导入到数据库中 3.需要修改nacos的配置文件 注意&#xff1a;修改…

wampServer安装Redis 扩展

第一步&#xff1a;查看php版本信息 使用 phpinfo() 函数查看 PHP 的版本信息&#xff08;用于选择扩展包&#xff09; 版本信息&#xff1a;PHP版本为 8.0.26&#xff0c;编译器版本 Visual C 2019&#xff0c;CPU架构 x64 。 第二步&#xff1a;根据第一步信息的版本选择扩…