Quellcode durchsuchen

feat: 接入com.plumelog日志系统

wangcheng vor 2 Jahren
Ursprung
Commit
721bb1bf1d

+ 5 - 0
launch-admin/pom.xml

@@ -62,6 +62,11 @@
             <artifactId>fastjson</artifactId>
             <version>1.2.83</version>
         </dependency>
+        <dependency>
+            <groupId>com.plumelog</groupId>
+            <artifactId>plumelog-logback</artifactId>
+            <version>3.4.2</version>
+        </dependency>
 
         <!--单点登录 -->
         <!--        <dependency>-->

+ 30 - 0
launch-admin/src/main/java/com/webflux/launchadmin/config/PlumeLogilterConfig.java

@@ -0,0 +1,30 @@
+package com.webflux.launchadmin.config;
+
+import com.webflux.launchadmin.filter.TraceIdFilter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.web.server.WebFilter;
+
+/**
+ * @author wangcheng
+ * @date 2024年07月16日 14:41
+ */
+@Order(Integer.MIN_VALUE)
+@Configuration
+public class PlumeLogilterConfig {
+
+    // @Bean
+    // public FilterRegistrationBean<WebFilter> filterRegistrationBean1() {
+    //     FilterRegistrationBean<WebFilter> filterRegistrationBean = new FilterRegistrationBean<>();
+    //     filterRegistrationBean.setFilter(initCustomFilter());
+    //     filterRegistrationBean.setUrlPatterns(Collections.singletonList("/*") );
+    //     filterRegistrationBean.setOrder(Integer.MIN_VALUE);
+    //     return filterRegistrationBean;
+    // }
+
+    @Bean
+    public WebFilter initCustomFilter() {
+        return new TraceIdFilter();
+    }
+}

+ 33 - 0
launch-admin/src/main/java/com/webflux/launchadmin/filter/TraceIdFilter.java

@@ -0,0 +1,33 @@
+package com.webflux.launchadmin.filter;
+
+import com.plumelog.core.TraceId;
+import lombok.SneakyThrows;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
+
+/**
+ * @author wangcheng
+ * @date 2024年07月16日 14:48
+ */
+@Component
+public class TraceIdFilter implements WebFilter {
+    @SneakyThrows
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
+        try {
+            ServerHttpRequest request = exchange.getRequest();
+            String traceId = request.getQueryParams().getFirst("traceId");
+            if (traceId == null || traceId.isEmpty()) {
+                TraceId.set();
+            } else {
+                TraceId.logTraceID.set(traceId);
+            }
+        } finally {
+            return chain.filter(exchange);
+        }
+    }
+}

+ 55 - 0
launch-admin/src/main/resources/logback-spring.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
+    <property name="LOG_HOME" value="/log"/>
+    <!-- 控制台输出 -->
+    <!-- 彩色日志 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" 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:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){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>
+
+    <springProfile name="prod">
+        <appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
+            <appName>launch-webflux-prod</appName>
+            <redisHost>r-uf6odtyjx4otfkczwh.redis.rds.aliyuncs.com:6379</redisHost>
+            <redisAuth>NTZY_LOg666%$_redis</redisAuth>
+        </appender>
+        <root level="INFO">
+            <appender-ref ref="plumelog"/>
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <appender name="plumelog" class="com.plumelog.logback.appender.RedisAppender">
+            <appName>launch-webflux-test</appName>
+            <redisHost>139.224.53.91:6381</redisHost>
+            <redisAuth>NTZY_LOg666%$_redis</redisAuth>
+        </appender>
+        <root level="INFO">
+            <appender-ref ref="plumelog"/>
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+
+</configuration>

+ 6 - 0
launch-admin/src/test/java/com/webflux/launchadmin/LaunchAdminApplicationTests.java

@@ -35,4 +35,10 @@ class LaunchAdminApplicationTests {
         }
     }
 
+    @Test
+    public void testLog() {
+        String val = "123abc";
+        Integer num = Integer.parseInt(val);
+        System.out.println(num);
+    }
 }