文章目录
前言
相信很多框架搭建的人都遇到过这样的问题:Springboot 2.6.x版本与 swagger3 不兼容,还得降低Springboot的版本,如果真的按网上说的将Springboot版本降了的话,总感觉有点本末倒置了。但是如果不降低Springboot的话,Swagger3还会报日志不兼容的问题,各种类找不到。
如何解决它们之间的版本冲突呢,今天就给大家一个完美的解决方案。
一、环境说明
- JDK8
- SpringCloud 2021.0.4
- Springboot 2.6.11
- Swagger 3
- logback 使用Spring自带的,再配上logback-class即可
- 配置文件使用 logback-spring.xml,并且支持控制台彩色打印
二、logback配置
1.pom配置
<!-- 以下三项依赖必须有,版本从父工程继承即可,这里使用的都是2.6.11 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Swagger3 依赖,只需这一个就够了, 版本也可以从父工程继承,这里直接写出来,以免大家不清楚-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- logback 日志依赖,只需这一个就够了,版本同样可以从父工程继承,这里也直接给大家写出来了-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
这里需要 着重说明的是logback日志的版本,为什么选用1.2.3 ? 不知道大家有没有注意到SpringCloud 自带的logback-core的版本,它的版本是1.2.11,如下图,理论上选用的class版本最好不要超过1.2.11,也不要太低了,我个人感觉还是1.2.3比较完美
2.logback-spring.xml
注意文件名最好不要改,就使用logback-spring.xml,其放放置的位置保持和application.yml 或 application.propertis 同一个目录,也就是classpath下,如下图:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>logback-spring</contextName>
<!-- 指定日志输出路径 -->
<property name="logging.path" value="../logs" />
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="color" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%color(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %color(${LOG_LEVEL_PATTERN:-%5p}) %color(${PID:- }){magenta} %color(---){faint} %color([%15.15t]){faint} %color(%-40.40logger{39}){cyan} %color(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--输出到文档-->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->