mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-11-04 08:06:12 +08:00 
			
		
		
		
	reactor:优化日志格式,解决 FILE 里存在 highlight、cyan高亮
reactor:弱化对 skywalking 依赖,可按需引入,更灵活
This commit is contained in:
		@ -44,18 +44,22 @@
 | 
				
			|||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>io.opentracing</groupId>
 | 
					            <groupId>io.opentracing</groupId>
 | 
				
			||||||
            <artifactId>opentracing-util</artifactId>
 | 
					            <artifactId>opentracing-util</artifactId>
 | 
				
			||||||
 | 
					            <optional>true</optional>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>org.apache.skywalking</groupId>
 | 
					            <groupId>org.apache.skywalking</groupId>
 | 
				
			||||||
            <artifactId>apm-toolkit-trace</artifactId>
 | 
					            <artifactId>apm-toolkit-trace</artifactId>
 | 
				
			||||||
 | 
					            <optional>true</optional>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>org.apache.skywalking</groupId>
 | 
					            <groupId>org.apache.skywalking</groupId>
 | 
				
			||||||
            <artifactId>apm-toolkit-logback-1.x</artifactId>
 | 
					            <artifactId>apm-toolkit-logback-1.x</artifactId>
 | 
				
			||||||
 | 
					            <optional>true</optional>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>org.apache.skywalking</groupId>
 | 
					            <groupId>org.apache.skywalking</groupId>
 | 
				
			||||||
            <artifactId>apm-toolkit-opentracing</artifactId>
 | 
					            <artifactId>apm-toolkit-opentracing</artifactId>
 | 
				
			||||||
 | 
					            <optional>true</optional>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Micrometer 对 Prometheus 的支持 -->
 | 
					        <!-- Micrometer 对 Prometheus 的支持 -->
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,9 @@ package cn.iocoder.yudao.framework.tracer.config;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum;
 | 
					import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum;
 | 
				
			||||||
import cn.iocoder.yudao.framework.tracer.core.aop.BizTraceAspect;
 | 
					import cn.iocoder.yudao.framework.tracer.core.aop.BizTraceAspect;
 | 
				
			||||||
import cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter;
 | 
					import cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter;
 | 
				
			||||||
 | 
					import io.opentracing.Tracer;
 | 
				
			||||||
 | 
					import io.opentracing.util.GlobalTracer;
 | 
				
			||||||
 | 
					import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer;
 | 
				
			||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
 | 
					import org.springframework.boot.autoconfigure.AutoConfiguration;
 | 
				
			||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 | 
				
			||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
					import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 | 
				
			||||||
@ -16,30 +19,32 @@ import org.springframework.context.annotation.Bean;
 | 
				
			|||||||
 * @author mashu
 | 
					 * @author mashu
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@AutoConfiguration
 | 
					@AutoConfiguration
 | 
				
			||||||
@ConditionalOnClass({BizTraceAspect.class})
 | 
					@ConditionalOnClass(name = {
 | 
				
			||||||
 | 
					        "org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer",
 | 
				
			||||||
 | 
					        "io.opentracing.Tracer"
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@EnableConfigurationProperties(TracerProperties.class)
 | 
					@EnableConfigurationProperties(TracerProperties.class)
 | 
				
			||||||
@ConditionalOnProperty(prefix = "yudao.tracer", value = "enable", matchIfMissing = true)
 | 
					@ConditionalOnProperty(prefix = "yudao.tracer", value = "enable", matchIfMissing = true)
 | 
				
			||||||
public class YudaoTracerAutoConfiguration {
 | 
					public class YudaoTracerAutoConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO @芋艿:重要。目前 opentracing 版本存在冲突,要么保证 skywalking,要么保证阿里云短信 sdk
 | 
					    @Bean
 | 
				
			||||||
//    @Bean
 | 
					    public TracerProperties bizTracerProperties() {
 | 
				
			||||||
//    public TracerProperties bizTracerProperties() {
 | 
					        return new TracerProperties();
 | 
				
			||||||
//        return new TracerProperties();
 | 
					    }
 | 
				
			||||||
//    }
 | 
					
 | 
				
			||||||
//
 | 
					    @Bean
 | 
				
			||||||
//    @Bean
 | 
					    public BizTraceAspect bizTracingAop() {
 | 
				
			||||||
//    public BizTraceAspect bizTracingAop() {
 | 
					        return new BizTraceAspect(tracer());
 | 
				
			||||||
//        return new BizTraceAspect(tracer());
 | 
					    }
 | 
				
			||||||
//    }
 | 
					
 | 
				
			||||||
//
 | 
					    @Bean
 | 
				
			||||||
//    @Bean
 | 
					    public Tracer tracer() {
 | 
				
			||||||
//    public Tracer tracer() {
 | 
					        // 创建 SkywalkingTracer 对象
 | 
				
			||||||
//        // 创建 SkywalkingTracer 对象
 | 
					        SkywalkingTracer tracer = new SkywalkingTracer();
 | 
				
			||||||
//        SkywalkingTracer tracer = new SkywalkingTracer();
 | 
					        // 设置为 GlobalTracer 的追踪器
 | 
				
			||||||
//        // 设置为 GlobalTracer 的追踪器
 | 
					        GlobalTracer.registerIfAbsent(tracer);
 | 
				
			||||||
//        GlobalTracer.register(tracer);
 | 
					        return tracer;
 | 
				
			||||||
//        return tracer;
 | 
					    }
 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 创建 TraceFilter 过滤器,响应 header 设置 traceId
 | 
					     * 创建 TraceFilter 过滤器,响应 header 设置 traceId
 | 
				
			||||||
 | 
				
			|||||||
@ -59,7 +59,6 @@ public class Kd100ExpressQueryRespDTO {
 | 
				
			|||||||
        /**
 | 
					        /**
 | 
				
			||||||
         * 轨迹发生时间
 | 
					         * 轨迹发生时间
 | 
				
			||||||
         */
 | 
					         */
 | 
				
			||||||
        @JsonProperty("time")
 | 
					 | 
				
			||||||
        @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
 | 
					        @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
 | 
				
			||||||
        @JsonDeserialize(using = LocalDateTimeDeserializer.class)
 | 
					        @JsonDeserialize(using = LocalDateTimeDeserializer.class)
 | 
				
			||||||
        private LocalDateTime time;
 | 
					        private LocalDateTime time;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,76 +1,56 @@
 | 
				
			|||||||
<configuration>
 | 
					<configuration>
 | 
				
			||||||
    <!-- 引用 Spring Boot 的 logback 基础配置 -->
 | 
					    <!-- 参考 org/springframework/boot/logging/logback/defaults.xml 配置,优化 CONSOLE_LOG_PATTERN、FILE_LOG_PATTERN -->
 | 
				
			||||||
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
 | 
					    <!-- 格式化输出:%d 表示日期,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
 | 
				
			||||||
    <!-- 变量 yudao.info.base-package,基础业务包 -->
 | 
					    <!-- CONSOLE_LOG_PATTERN 相比 FILE_LOG_PATTERN 多了 highlight、cyan 等高亮 -->
 | 
				
			||||||
    <springProperty scope="context" name="yudao.info.base-package" source="yudao.info.base-package"/>
 | 
					    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n"/>
 | 
				
			||||||
    <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
 | 
					    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n"/>
 | 
				
			||||||
    <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 控制台 Appender -->
 | 
					    <!-- 控制台 Appender -->
 | 
				
			||||||
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
 | 
					    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
 | 
				
			||||||
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
 | 
					        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 | 
				
			||||||
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
 | 
					            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
 | 
				
			||||||
                <pattern>${PATTERN_DEFAULT}</pattern>
 | 
					 | 
				
			||||||
            </layout>
 | 
					 | 
				
			||||||
        </encoder>
 | 
					        </encoder>
 | 
				
			||||||
    </appender>
 | 
					    </appender>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 文件 Appender -->
 | 
					    <!-- 文件 Appender -->
 | 
				
			||||||
    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
 | 
					    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
 | 
				
			||||||
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
					    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
 | 
					        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 | 
				
			||||||
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
 | 
					            <pattern>${FILE_LOG_PATTERN}</pattern>
 | 
				
			||||||
                <pattern>${PATTERN_DEFAULT}</pattern>
 | 
					 | 
				
			||||||
            </layout>
 | 
					 | 
				
			||||||
        </encoder>
 | 
					        </encoder>
 | 
				
			||||||
        <!-- 日志文件名 -->
 | 
					        <!-- 日志文件名 -->
 | 
				
			||||||
        <file>${LOG_FILE}</file>
 | 
					        <file>${LOG_FILE}</file>
 | 
				
			||||||
 | 
					        <!-- 滚动策略:基于【每天 + 大小】创建日志文件 -->
 | 
				
			||||||
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
				
			||||||
            <!-- 滚动后的日志文件名 -->
 | 
					            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 日志文件输出的文件名 -->
 | 
				
			||||||
            <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
 | 
					            <maxHistory>30</maxHistory> <!-- 日志文件的保留天数 -->
 | 
				
			||||||
            <!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
 | 
					            <maxFileSize>10MB</maxFileSize> <!-- 日志文件,到达多少容量,进行滚动 -->
 | 
				
			||||||
            <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
 | 
					 | 
				
			||||||
            <!-- 日志文件,到达多少容量,进行滚动 -->
 | 
					 | 
				
			||||||
            <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
 | 
					 | 
				
			||||||
            <!-- 日志文件的总大小,0 表示不限制 -->
 | 
					 | 
				
			||||||
            <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
 | 
					 | 
				
			||||||
            <!-- 日志文件的保留天数 -->
 | 
					 | 
				
			||||||
            <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
 | 
					 | 
				
			||||||
        </rollingPolicy>
 | 
					        </rollingPolicy>
 | 
				
			||||||
    </appender>
 | 
					    </appender>
 | 
				
			||||||
    <!-- 异步写入日志,提升性能 -->
 | 
					    <!-- 异步写入日志,提升性能 -->
 | 
				
			||||||
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
 | 
					    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
 | 
				
			||||||
        <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
 | 
					        <discardingThreshold>0</discardingThreshold> <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
 | 
				
			||||||
        <discardingThreshold>0</discardingThreshold>
 | 
					        <queueSize>512</queueSize> <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
 | 
				
			||||||
        <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
 | 
					 | 
				
			||||||
        <queueSize>256</queueSize>
 | 
					 | 
				
			||||||
        <appender-ref ref="FILE"/>
 | 
					        <appender-ref ref="FILE"/>
 | 
				
			||||||
    </appender>
 | 
					    </appender>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
 | 
					    <!-- SkyWalking Appender:GRPC 日志收集,实现日志中心 -->
 | 
				
			||||||
    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
 | 
					    <!--
 | 
				
			||||||
 | 
					    <appender name="SKYWALKING" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
 | 
				
			||||||
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
 | 
					        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
 | 
				
			||||||
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
 | 
					            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
 | 
				
			||||||
                <pattern>${PATTERN_DEFAULT}</pattern>
 | 
					                <pattern>[%tid] ${FILE_LOG_PATTERN}</pattern>
 | 
				
			||||||
            </layout>
 | 
					            </layout>
 | 
				
			||||||
        </encoder>
 | 
					        </encoder>
 | 
				
			||||||
    </appender>
 | 
					    </appender>
 | 
				
			||||||
 | 
					    -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 本地环境 -->
 | 
					    <root level="INFO">
 | 
				
			||||||
    <springProfile name="local">
 | 
					        <appender-ref ref="STDOUT"/>
 | 
				
			||||||
        <root level="INFO">
 | 
					        <!-- 本地环境下,如果不想【FILE】打印日志,可以注释掉本行 -->
 | 
				
			||||||
            <appender-ref ref="STDOUT"/>
 | 
					        <appender-ref ref="ASYNC"/>
 | 
				
			||||||
            <appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
 | 
					        <!-- 如果想接入【SkyWalking 日志服务】,可以取消注释掉本行 -->
 | 
				
			||||||
            <appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
 | 
					        <!-- <appender-ref ref="SKYWALKING"/> -->
 | 
				
			||||||
        </root>
 | 
					    </root>
 | 
				
			||||||
    </springProfile>
 | 
					 | 
				
			||||||
    <!-- 其它环境 -->
 | 
					 | 
				
			||||||
    <springProfile name="dev,test,stage,prod,default">
 | 
					 | 
				
			||||||
        <root level="INFO">
 | 
					 | 
				
			||||||
            <appender-ref ref="STDOUT"/>
 | 
					 | 
				
			||||||
            <appender-ref ref="ASYNC"/>
 | 
					 | 
				
			||||||
            <appender-ref ref="GRPC"/>
 | 
					 | 
				
			||||||
        </root>
 | 
					 | 
				
			||||||
    </springProfile>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
</configuration>
 | 
					</configuration>
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user