美文网首页
实现自定义SpringBoot框架日志组件の五: 工程实践

实现自定义SpringBoot框架日志组件の五: 工程实践

作者: Yellowtail | 来源:发表于2022-09-10 00:05 被阅读0次

系列

实现自定义SpringBoot框架日志组件の一:日志系统
实现自定义SpringBoot框架日志组件の二:配置文件
实现自定义SpringBoot框架日志组件の三: 自定义pattern
实现自定义SpringBoot框架日志组件の四: 自适应

前言

这篇博客分享一下我自己的工程构建的经验,当然了千人千面,仅供参考

构建

看一下我的 pom.xml

<!-- log4j2用到的高性能队列  -->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.4.4</version>
        </dependency>


        <!--以下依赖的 scope 是 provided,表示编译时不打包,运行时由使用者提供-->
        <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>
            <scope>provided</scope>
        </dependency>

        <!-- 引入springboot 的 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <scope>provided</scope>
        </dependency>

这里的依赖有两种 scope
一种是默认的,也就是compile,一种是 provided
贴个图

image.png

其中compile会进行依赖传递,也就是说依赖了我这个 jar包的项目,会自动依赖 disruptor-3.4.4,会多引入一个包
provided不会进行依赖传递,也就是说用了我的包的项目,不引入spring-boot-starter-log4j2 的时候会有问题,不生效或者报错

这么做的原因如下

  1. 引入 disruptor
    考虑到使用这个项目的可能之前是 logback 的,没有见过这个包;为了方便直接默认引入,就算版本冲突了,也只有这一个包冲突了,解决起来也方便
  2. 不引入 spring-boot-starter-log4j2
    考虑到这个包是spring体系的,会默认引入一堆的依赖;使用方的spring和springboot的版本也是千奇百怪,强行引入的话,万一导致版本不兼容或者冲突,一堆包需要解决,很麻烦,所以只做provided, 我自己能编译通过就行,具体版本使用方自行决定,与此同时使用文档要写清楚

spring-boot-starter-log4j2 的依赖如下(插件是idea的 maven helper

image.png

maven 中央仓库上传

待完善

参考

Maven之scope详解

相关文章

网友评论

      本文标题:实现自定义SpringBoot框架日志组件の五: 工程实践

      本文链接:https://www.haomeiwen.com/subject/sndqnrtx.html