SpringBoot与日志框架2(日志内斗)

一、SpringBoot如何引入slf4j+logback框架的呢?

在POM文件中

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

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.1.4.RELEASE</version>
</dependency>

依赖

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

更细致的依赖图

可以看到除了引入具体实现logback和门面slf4j的包,还加很多转换中间包,为什么呢?

二、这么多日志框架,如何统一使用slf4j+logback呢?

我们知道第三方框架都默认引用了不同的日志框架,如:Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx

所以我们用三部曲达到统一的目的:

1、将系统中其他日志框架先排除出去;

2、用中间包来替换原有的日志框架;

3、我们导入slf4j其他的实现。

当然这是springboot文档有教的,下面看下官方的几张关系梳理图,就很清晰了,多看官方文档有益。

A.各日志框架的使用

B。排除、替换(结合三部曲

三、如何替换springboot默认日志框架?(默认挺好的,只是更好理解原理)

其实结合上面的关系图就可以进行三部曲操作。

A.切换为slf4j+log4j:

1.排除logback2.排除log4j-over-slf4j中间替换包

<dependency>

  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <artifactId>logback-classic</artifactId>
      <groupId>ch.qos.logback</groupId>
    </exclusion>
    <exclusion>
      <artifactId>log4j-over-slf4j</artifactId>
      <groupId>org.slf4j</groupId>
    </exclusion>
  </exclusions>
</dependency>
3.加入中间适应包
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

B.切换为log4j2

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

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

原文地址:https://www.cnblogs.com/Oven1993/p/10771900.html

时间: 2024-10-07 15:54:26

SpringBoot与日志框架2(日志内斗)的相关文章

java日志框架与日志系统

日志框架:提供日志调用的接口,实际的日志输出委托给日志系统实现. JCL(Jakarta Commons Logging):比较流行的日志框架,很多框架都依赖JCL,例如Spring等. SLF4j:提供新的API,初衷是配合Logback使用,但同时兼容Log4j. 日志系统:负责输出日志 Log4j:较早的日志系统,可以单独使用,也可配合日志框架JCL使用 Logback:Log4j的替代产品,需要配合日志框架SLF4j使用 JUL(java.util.logging):JDK提供的日志系统

Springboot 系列(四)Spring Boot 日志框架

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 Spring 框架选择使用了 JCL 作为默认日志输出.而 Spring Boot 默认选择了 SLF4J 结合 LogBack.那我们在项目中该使用哪种日志框架呢?在对于不同的第三方 jar 使用了不同的日志框架的时候,我们该怎么处理呢? 1. 日志框架介绍 日志对于应用程序的重要性不言而喻,不管是记录运行情况还是追踪线上问题,都离不开对日

Java日志框架研究及常见配置

按照基本的定义,日志即是对程序运行过程中关键事件的记录:大体日志分为运行日志和开发日志,运行日志在业务层面记录一些关键事件,为后面的跟踪运行提供帮助,而开发日志大多数时候是调试日志,根据事件流的输出来调试程序:因为开发人员本身的关注领域,运行日志可能制作的比较少,难以达到跟踪业务流的作用,而即使是开发日志,因为开发的调试有各种技巧,即使是跟踪事件流,使用println也比日志配置简单多了,这是一个投资回报的问ti,而人经常性的是短视的,调试可能在这些人眼里根本不需要认真对待,没有前期的事件记录规

Java日志框架:slf4j作用及其实现原理

简单回顾门面模式 slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式, 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用.用一张图来表示门面模式的结构为: 门面模式的核心为Facade即门面对象,门面对象核心为几个点: 知道所有子角色的功能和责任 将客户端发来的请求委派到子系统中,没有实际业务逻辑 不参与子系统内业务逻辑的实现 大致上来看,对门面模式的回顾到这里就可以了,开始接下来对SLF4J的学习. 我们为什么要使用sl

tomcat日志及logback相关日志框架

一.重点问题整理 1.1 关于logback.xml中的路径设置问题 准备金系统的logback.xml中设置的路径是: <!-- 定义日志文件 输出位置 --> <property name="log_dir" value="E:\logs" /> 在Windows环境下,会识别E:为系统的E盘,默认在E盘下创建logs文件夹.但是正在Linux环境下,不存在E盘,会将E:\logs识别为E:logs文件夹.此时为相对路径,而tomcat在

SpringBoot日记——日志框架篇

在项目的开发中,日志是必不可少的一个记录事件的组件,所以也会相应的在项目中实现和构建我们所需要的日志框架. 而市面上常见的日志框架有很多,比如:JCL.SLF4J.Jboss-logging.jUL.log4j.log4j2.logback等等,我们该如何选择呢? 通常情况下,日志是由一个抽象层+实现层的组合来搭建的. 日志-抽象层 日志-实现层 JCL.SLF4J.jboss-logging jul.log4j.log4j2.logback 而SpringBoot机智的选择了SLF4J+Log

JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架

Spring Boot 日志篇 1.日志框架(故事引入) 小张:开发一个大型系统: ? 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? ? 2.框架来记录系统的一些运行时信息:日志框架 : zhanglogging.jar: ? 3.高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? ? 4.将以前框架卸下来?换上新的框架,重新修改之前相关的API:zhanglogging-prefect.ja

SpringBoot与日志框架1

一.日志框架 1.无论在什么系统,日志框架都是一个重要角色,所以理解和用好日志框架是相当重要的:像JDBC一样,日志框架分为接口层的门面和具体的实现组成. 2.市面上的产品: 2.1门面:SLF4J(Simple Loggin Facade for Java).JCL(Jakarta Common Loggin).jboss-logging 2.2具体实现:Log4j->Logback.Log4j2.JUL(java.util.loging) 其中SLF4J.Log4j->Logback都是出

springboot整合log4j2日志框架

springboot依赖中默认引入spring-boot-starter-logging,若要使用log4j2日志框架,则需要先将spring-boot-starter-logging排除. 方法: 在依赖关系图中找到spring-boot-starter-logging,单击右键选择exclude将其排除出去. pom文件中引入: <dependency> <groupId>org.springframework.boot</groupId> <artifact