首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Slf4j和Log4j2的Spring boot日志。删除spring-boot-starter-logging的原因

在使用Spring Boot进行开发时,默认情况下,Spring Boot会引入spring-boot-starter-logging依赖,它内部使用了Logback作为日志框架。然而,有时我们可能希望使用其他的日志框架,比如Slf4j与Log4j2组合,这时候就需要移除spring-boot-starter-logging依赖,并引入相应的Log4j2依赖。

基础概念

Slf4j:Simple Logging Facade for Java,是一个为各种日志框架提供简单统一接口的日志门面。 Log4j2:Apache的一个开源日志框架,是Log4j的升级版,提供了更好的性能和更多的功能。 Spring Boot Starter Logging:Spring Boot提供的用于日志记录的自动配置模块,默认使用Logback。

删除spring-boot-starter-logging的原因

  1. 兼容性问题:某些第三方库可能依赖于特定的日志框架,与Logback存在冲突。
  2. 性能需求:Log4j2相比Logback在某些场景下具有更好的性能。
  3. 功能需求:Log4j2提供了Logback不具备的一些高级功能,如异步日志记录、插件机制等。

相关优势

  • 性能提升:Log4j2的异步日志记录可以显著提高应用性能。
  • 灵活性增强:支持更多的配置选项和插件扩展。
  • 兼容性更好:能够更好地与各种第三方库集成。

类型与应用场景

  • 类型:日志框架主要分为同步和异步两种记录方式。
  • 应用场景:在高并发、高性能要求的系统中,异步日志记录尤为重要;而在对日志实时性要求较高的场景中,同步日志可能更合适。

解决方案及示例代码

1. 移除spring-boot-starter-logging依赖

pom.xml文件中排除该依赖:

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 引入Log4j2依赖

添加Log4j2及其相关依赖到项目中:

代码语言:txt
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

3. 配置Log4j2

src/main/resources目录下创建log4j2.xml配置文件,并进行相应的配置:

代码语言:txt
复制
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

4. 使用Slf4j进行日志记录

在代码中使用Slf4j的Logger进行日志打印:

代码语言:txt
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public void myMethod() {
        logger.info("This is an info message.");
        logger.error("This is an error message.", new Exception("Test exception"));
    }
}

通过以上步骤,你就可以成功地在Spring Boot项目中替换掉默认的Logback日志框架,转而使用Slf4j与Log4j2的组合了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot(十)Logback和Log4j2集成与日志发展史

一、简介 Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看。...1.4 SLF4J SLF4J(Simple Logging Facade For Java)简单日志门面,和JCL功能类似,但JCL有一个致命的缺点就是算法复杂,出现问题难以排除,而SLF4J的诞生就是为了解决...Logback和Log4j2在Spring Boot中的实现。...因为spring-boot-starter-logging是Logback的日志实现,而Spring Boot启动项spring-boot-starter又依赖了spring-boot-starter-logging...Boot官方建议使用“-spring”的命名规则,进行日志配置,如:logback-spring.xml而不是logback.xml。

1.6K20

Apache Log4j2详解

小编在使用中遇到一些坑,同时引入spring-boot-starter和spring-boot-starter-web依赖时,需要在spring-boot-starter...中排除spring-boot-starter-logging依赖,因为spring-boot-starter-web依赖于spring-boot-starter,根据Maven依赖关系,在spring-boot-starter...中排除spring-boot-starter-logging依赖才能排除成功。...,混合日志和异步日志配置详解 Log4j2同步日志,混合日志和异步日志配置详解 配置文件详解 Log4j2配置文件详解 日志重复打印问题 如果Root中的日志包含了Logger中的日志信息,并且AppenderRef...具体介绍可以看我的博客Lombok简介、使用、工作原理、优缺点 使用Lombok后,@Slf4j注解生成了log日志常量,无需去声明一个log就可以在类中使用log记录日志。

1.2K30
  • 第三章-Spring Boot 日志

    ; 给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层; 市面上的日志框架; JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…....底层是Spring框架,Spring框架默认是用JCL;‘ ==SpringBoot选用 SLF4j和logback;== 2、SLF4j使用 1、如何在系统中使用SLF4j https://www.slf4j.org...以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法; 给系统里面导入slf4j的jar和 logback的实现jar import org.slf4j.Logger...> spring-boot-starter-logging 底层依赖关系 总结: 1)、SpringBoot底层也是使用...日志 # 可以指定完整的路径; #logging.file=G:/springboot.log ​ # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件

    49520

    springboot06、log4j2日志配置

    4、log4j使用 ---- 前言: 日志接口(slf4j) slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用...接口用于定制规范,可以有多个实现,使用时是面向接口的(导入的包都是slf4j的包而不是具体某个日志框架中的包),即直接和接口交互,不直接使用实现,所以可以任意的更换实现而不用更改代码中的日志相关代码。...Log4j2:Log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活...-- log4j2所需要的配置 --> org.springframework.boot spring-boot-starter...spring-boot-starter-logging</artifactId </dependency

    36610

    springboot-日志系统

    :底层是Spring框架,Spring框架默认是用JCL;‘ **==SpringBoot选用 SLF4j和logback;==** # 2、SLF4j使用 # 1、如何在系统中使用SLF4j https...://www.slf4j.org 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法; 给系统里面导入slf4j的jar和 logback的实现jar import...使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件; # 2、遗留问题 a(slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging...> org.springframework.boot spring-boot-starter-logging</artifactId...; #logging.file=G:/springboot.log # 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件 logging.path

    81320

    SpringBoot入门建站全系列(七)日志组件的使用

    slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。也就是个日志中介,中间商赚差价。...如果用了“Starters”,默认的日志组件就是Logback,这句话困惑了很久,后来跟踪日志实现,查看了依赖结构才发现,它说的这个“Starters”指的是"spring-boot-starter-logging...",我们在引入spring-boot-starter-web的时候,就已经引入了spring-boot-starter-logging,看图: ?...要使用log4j,首先要排除已经依赖的spring-boot-starter-logging,然后手动引入spring-boot-starter-log4j2。...> 5.1 log4j2快速配置 同样可以使用配置文件里直接配置的方法使用,跟logback使用一样。

    45150

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

    前言 Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack。那我们在项目中该使用哪种日志框架呢?...关于 Log4j, Log4j2 和 Slf4j 直接的故事这里不做介绍,有兴趣可以自行百度。 2. SLF4 的使用 在开发的时候不应该直接使用日志实现类,应该使用日志的抽象层。...,要为系统导入 SLF4J 的 jar 和 日志框架的实现 jar....从图中我们得到一种统一日志框架使用的方式,可以使用一种和要替换的日志框架类完全一样的 jar 进行替换,这样不至于原来的第三方 jar 报错,而这个替换的 jar 其实使用了 SLF4J API....Spring Boot 的日志使用 5.1. 日志级别和格式 从上面的分析,发现 Spring Boot 默认已经使用了 SLF4J + LogBack .

    3.5K00

    SpringBoot入门建站全系列(七)日志组件的使用

    slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。也就是个日志中介,中间商赚差价。...如果用了“Starters”,默认的日志组件就是Logback,这句话困惑了很久,后来跟踪日志实现,查看了依赖结构才发现,它说的这个“Starters”指的是"spring-boot-starter-logging...",我们在引入spring-boot-starter-web的时候,就已经引入了spring-boot-starter-logging,看图: [在这里插入图片描述] 三、快速配置日志方法(已经可用了)...》 打日志的时候用的是slf4j,具体实现是logback, 切记,尽量在在代码里直接不要使用具体实现的日志组件,不然万一哪天产品抽风了呢?...要使用log4j,首先要排除已经依赖的spring-boot-starter-logging,然后手动引入spring-boot-starter-log4j2。

    81320

    一文带你搞懂日志框架如何切换?

    言归正传,上一篇文章写了Spring Boot的默认日志框架Logback的基本配置,有兴趣的可以看看:Spring Boot第三弹,一文带你搞懂日志如何配置?。...今天就来介绍一下Spring Boot如何无感的切换日志框架? Spring Boot 版本 本文基于的Spring Boot的版本是2.3.4.RELEASE。 什么是日志门面?...SLF4j是日志门面,无论什么日志框架都是基于SLF4j的API实现,因此无论是代码打印日志还是Lombok注解形式打印日志,都要使用的SLF4j的API,而不是日志框架的API,这样才能解耦,做到无感知...不再是简单的输出日志,而是将日志输出指令委托给slf4j。 下面就以log4j2为例,切换Spring Boot的日志框架为Log4j2。...引入依赖 Spring Boot 默认是Logback日志框架,如果想要切换log4j2肯定是要将Logback的依赖移除,只需要排除web模块中的日志启动器即可,如下:

    23210

    『互联网架构』软件架构-Spring boot集成日志框架(89)

    Spring Boot 也提供了不同的选项,比如日志框架可以用 logback 或 log4j ,log4j2等。 ?...日志系统 springboot自带log日志功能 使用的是slf4j(Simple Logging Facade For Java),它是一个针对于各类Java日志框架的统一Facade抽象。...Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。这是默认支持logback的原因。日志实现默认使用的logback。...值得注意的是,默认情况下,Spring Boot 使用 logback 作为应用日志框架。...因为 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖就是 使用Spring Boot 默认的日志框架 logback。 ?

    41620

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

    前言 Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack。那我们在项目中该使用哪种日志框架呢?...关于 Log4j, Log4j2 和 Slf4j 直接的故事这里不做介绍,有兴趣可以自行百度。 2. SLF4 的使用 在开发的时候不应该直接使用日志实现类,应该使用日志的抽象层。...,要为系统导入 SLF4J 的 jar 和 日志框架的实现 jar....从图中我们得到一种统一日志框架使用的方式,可以使用一种和要替换的日志框架类完全一样的 jar 进行替换,这样不至于原来的第三方 jar 报错,而这个替换的 jar 其实使用了 SLF4J API....Spring Boot 的日志使用 5.1. 日志级别和格式 从上面的分析,发现 Spring Boot 默认已经使用了 SLF4J + LogBack .

    47510

    Spring Boot从零入门4_日志记录及其配置详解

    SLF4J 跟Apache Common Logging一样,也是一套接口,现在流行的日志框架和接口组合就是Commons Logging加Log4j 、SLF4J加Logback、slf4j + log4j2...Spring Boot的默认配置对Java Util Logging,Log4j2和Logback日志记录器的使用都提供了支持。...Logging,Log4J2和Logback),虽然我们不提供任何日志相关的配置,但是我们仍然能够在控制台上看到日志打印,这是因为Spring boot使用了Logback提供了默认的日志记录支持。...2.1.1 使用日志记录器打印日志 在应用程序代码中添加日志记录语句,我们使用SLF4J接口中的org.slf4j.Logger和org.slf4j.LoggerFactory。...Apache common logging和SLF4J有了个了解,Logback是Spring boot中默认配置的日志记录器,我们对如何在application.properties中配置日志相关配置做了详细说明

    1.7K10

    Spring Boot 2.x中如何使用Log4j2记录日志

    上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用。今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2。...虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班),但不可否认的是Log4j2依然是目前性能最好的日志框架。所以,当Logback性能上无法支撑的时候,替换使用Log4j2还是最为快速便捷的方法。...下面,我们就来学习一下如何在Spring Boot 2.x版本中,替换Logback,使用Log4j2记录日志。...第一步:在pom.xml中引入Log4j2的Starter依赖spring-boot-starter-log4j2,同时排除默认引入的spring-boot-starter-logging,比如下面这样...常见问题 可能有小伙伴会问,之前不是推荐大家用Slf4j来记录日志,隔离了具体实现的日志框架么?那我怎么知道这一顿操作之后,真的已经用上Log4j2了呢?

    1.9K40
    领券