系列
實(shí)現(xiàn)自定義SpringBoot框架日志組件の一:日志系統(tǒng)
實(shí)現(xiàn)自定義SpringBoot框架日志組件の二:配置文件
實(shí)現(xiàn)自定義SpringBoot框架日志組件の三: 自定義pattern
實(shí)現(xiàn)自定義SpringBoot框架日志組件の四: 自適應(yīng)
前言
這篇博客分享一下我自己的工程構(gòu)建的經(jīng)驗(yàn),當(dāng)然了千人千面,僅供參考
構(gòu)建
看一下我的 pom.xml
<!-- log4j2用到的高性能隊(duì)列 -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.4</version>
</dependency>
<!--以下依賴的 scope 是 provided,表示編譯時(shí)不打包,運(yùn)行時(shí)由使用者提供-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除默認(rèn)的日志組件 -->
<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
一種是默認(rèn)的,也就是compile
,一種是 provided
貼個(gè)圖
image.png
其中compile
會(huì)進(jìn)行依賴傳遞,也就是說(shuō)依賴了我這個(gè) jar包的項(xiàng)目,會(huì)自動(dòng)依賴 disruptor-3.4.4
,會(huì)多引入一個(gè)包
provided
不會(huì)進(jìn)行依賴傳遞,也就是說(shuō)用了我的包的項(xiàng)目,不引入spring-boot-starter-log4j2
的時(shí)候會(huì)有問(wèn)題,不生效或者報(bào)錯(cuò)
這么做的原因如下
- 引入
disruptor
考慮到使用這個(gè)項(xiàng)目的可能之前是 logback 的,沒有見過(guò)這個(gè)包;為了方便直接默認(rèn)引入,就算版本沖突了,也只有這一個(gè)包沖突了,解決起來(lái)也方便 - 不引入
spring-boot-starter-log4j2
考慮到這個(gè)包是spring
體系的,會(huì)默認(rèn)引入一堆的依賴;使用方的spring和springboot的版本也是千奇百怪,強(qiáng)行引入的話,萬(wàn)一導(dǎo)致版本不兼容或者沖突,一堆包需要解決,很麻煩,所以只做provided
, 我自己能編譯通過(guò)就行,具體版本使用方自行決定,與此同時(shí)使用文檔要寫清楚
spring-boot-starter-log4j2
的依賴如下(插件是idea的 maven helper)
image.png
maven 中央倉(cāng)庫(kù)上傳
待完善