0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Spring Boot的日志框架使用

冬至子 来源:瑞煕share 作者:brevity wit 2023-06-02 10:59 次阅读

日志框架

目前市面上常见的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spring默认日志框架)、JUL(java.util.logging)等。

日志框架包括日志的抽象与日志的实现两部分,其中日志的抽象推荐使用slf4j,而日志的实现推荐使用logback。Spring Boot的日志框架默认选择的就是这两个。

SLF4J的使用

系统开发在使用日志的时候,不应该使用日志的实现,而应该使用日志的抽象,但是日志的配置文件还是要使用日志实现框架本身的配置文件,日志使用示例代码如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World!");
  }
}

slf4j的调用结构如下:

图片

日志统一问题

当一个项目集成了多个框架,而这些框架大部分都集成了日志框架,就会出现一个项目底层使用多种日志框架的问题,slf4j给出了这个问题的解决办法,如下图所示:

图片

日志框架统一为slf4j的步骤:①排除其他框架集成的日志框架;②用中间包来替换原来的日志框架;③导入slf4j框架的其他实现。

Spring Boot的日志

Spring Boot Starter的maven依赖:
< dependency >
     < groupId >org.springframework.boot< /groupId >
     < artifactId >spring-boot-starter< /artifactId >
     < version >2.7.7< /version >
     < scope >compile< /scope >
 < /dependency >

Spring Boot底层的日志依赖关系图:

图片

Spring Boot使用的日志依赖:

< dependency >
      < groupId >org.springframework.boot< /groupId >
      < artifactId >spring-boot-starter-logging< /artifactId >
      < version >2.7.7< /version >
      < scope >compile< /scope >
  < /dependency >

由上图可以看出,Spring Boot自动适配了所有的日志,而且底层默认使用了slf4j+logback记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架移除即可。

Spring Boot默认日志框架示例代码如下:

package com.brevity;


 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.test.context.SpringBootTest;


 @SpringBootTest
 class LoggingApplicationTests {


     // 获取日志记录器,参数建议使用当前类
     Logger logger = LoggerFactory.getLogger(LoggingApplicationTests.class);


      @Test
      void logTest() {
          // Spring Boot默认使用的是info级别的日志
          logger.trace("跟踪日志");
          logger.debug("debug日志");
          logger.info("info日志");
          logger.warn("warn日志");
          logger.error("error日志");
      }


 }

修改默认的日志级别只需要在配置文件中修改即可,例如在application.properties文件中添加如下代码:

# 调整日志级别
  logging.level.com.brevity=trace
  # 修改控制台输出的日志格式
  # %d表示日期时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度
  # %logger{50} 表示logger名字最长50个字符,否则按照句号分割,%msg:日志消息,%n是换行符
  logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Boot
    +关注

    关注

    0

    文章

    142

    浏览量

    35259
收藏 人收藏

    评论

    相关推荐

    Spring框架的设计理念

    Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的hqC应用做过报道。本文将从另外一个视角试图剖析出Sp
    发表于 07-15 08:17

    启动Spring Boot项目应用的三种方法

    首先大家了解什么是Spring BootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新
    发表于 01-14 17:33

    Spring Boot嵌入式Web容器原理是什么

    ,不需要配置任何特殊的XML配置,为了这个目标,Spring BootSpring 4.0框架之上提供了很多特性,帮助应用以“约定优于配置”“开箱即用”的方式来启动应用并运行上下文。
    发表于 12-16 07:57

    java 日志框架Spring Boot分析

    引言:我们需要在已有的微服务代码中添加日志功能,用于输出需要关注的内容,这是最平常的技术需求了。由于我们的微服务代码是基于SpringBoot开发的,那么问题就转换为如何在Spring Boot
    发表于 09-28 14:58 0次下载

    Spring Boot框架错误处理

    /spring-boot-rest-api-error-handling》Guide to Spring Boot REST API Error Handling《/a》 《br》 《strong》作者《/strong》:BRU
    发表于 09-28 15:31 0次下载

    Spring Boot从零入门1 详述

    在开始学习Spring Boot之前,我之前从未接触过Spring相关的项目,Java基础还是几年前自学的,现在估计也忘得差不多了吧,写Spring
    的头像 发表于 12-10 22:18 419次阅读

    Spring Boot特有的实践

    Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot
    的头像 发表于 09-29 10:24 647次阅读

    强大的Spring Boot 3.0要来了

    来源:OSC开源社区(ID:oschina2013) Spring Boot 3.0 首个 RC 已发布,此外还为两个分支发布了更新:2.7.5 2.6.13。 3.0.0-RC1: https
    的头像 发表于 10-31 11:17 1177次阅读

    如何通过IDEA快速建立一个Spring Boot项目

    在说Spring Boot之前先要了解Spring,那么Spring是什么呢?Spring 框架
    的头像 发表于 03-17 15:00 816次阅读
    如何通过IDEA快速建立一个<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>项目

    Spring Boot Web相关的基础知识

    上一篇文章我们已经学会了如何通过IDEA快速建立一个Spring Boot项目,还介绍了Spring Boot项目的结构,介绍了项目配置文件pom.xml的组成部分,并且撰写了我们
    的头像 发表于 03-17 15:03 462次阅读

    Spring Boot Actuator快速入门

    使用的框架基本上都要升级到 2.x了吧。 什么是 Actuator ? 从本质上讲, Spring Boot Actuator 为我们的应用程序带来了生产就绪的功能。监控我们的应用程序,收集指标,了解流量,或者是
    的头像 发表于 10-09 17:11 345次阅读

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 E
    的头像 发表于 10-10 11:40 422次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>启动 Eureka流程

    Spring Boot的启动原理

    可能很多初学者会比较困惑,Spring Boot 是如何做到将应用代码和所有的依赖打包成一个独立的 Jar 包,因为传统的 Java 项目打包成 Jar 包之后,需要通过 -classpath 属性
    的头像 发表于 10-13 11:44 374次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的启动原理

    Spring Boot 的设计目标

    什么是Spring Boot Spring BootSpring 开源组织下的一个子项目,也是 S
    的头像 发表于 10-13 14:56 314次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 的设计目标

    spring分布式框架有哪些

    Spring分布式框架Spring Cloud Spring Cloud是基于Spring Boo
    的头像 发表于 11-16 10:58 365次阅读