系列
实现自定义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
贴个图
其中compile
会进行依赖传递,也就是说依赖了我这个 jar包的项目,会自动依赖 disruptor-3.4.4
,会多引入一个包
provided
不会进行依赖传递,也就是说用了我的包的项目,不引入spring-boot-starter-log4j2
的时候会有问题,不生效或者报错
这么做的原因如下
- 引入
disruptor
考虑到使用这个项目的可能之前是 logback 的,没有见过这个包;为了方便直接默认引入,就算版本冲突了,也只有这一个包冲突了,解决起来也方便 - 不引入
spring-boot-starter-log4j2
考虑到这个包是spring
体系的,会默认引入一堆的依赖;使用方的spring和springboot的版本也是千奇百怪,强行引入的话,万一导致版本不兼容或者冲突,一堆包需要解决,很麻烦,所以只做provided
, 我自己能编译通过就行,具体版本使用方自行决定,与此同时使用文档要写清楚
spring-boot-starter-log4j2
的依赖如下(插件是idea的 maven helper)
maven 中央仓库上传
待完善