瀏覽代碼

log trace

丁云鹏 1 年之前
父節點
當前提交
77661a4e27

+ 5 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/RecommendLoghubAppender.java

@@ -5,6 +5,7 @@ import ch.qos.logback.classic.spi.LoggingEvent;
 import ch.qos.logback.classic.spi.StackTraceElementProxy;
 import ch.qos.logback.classic.spi.ThrowableProxyUtil;
 import ch.qos.logback.core.CoreConstants;
+import ch.qos.logback.core.UnsynchronizedAppenderBase;
 import ch.qos.logback.core.encoder.Encoder;
 import com.aliyun.openservices.aliyun.log.producer.LogProducer;
 import com.aliyun.openservices.aliyun.log.producer.Producer;
@@ -12,8 +13,6 @@ import com.aliyun.openservices.aliyun.log.producer.ProducerConfig;
 import com.aliyun.openservices.aliyun.log.producer.ProjectConfig;
 import com.aliyun.openservices.aliyun.log.producer.errors.ProducerException;
 import com.aliyun.openservices.log.common.LogItem;
-import com.aliyun.openservices.log.logback.LoghubAppender;
-import com.aliyun.openservices.log.logback.LoghubAppenderCallback;
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
 import org.joda.time.format.DateTimeFormat;
@@ -29,7 +28,7 @@ import java.util.Optional;
 /**
  * @author dyp
  */
-public class RecommendLoghubAppender<E> extends LoghubAppender<E> {
+public class RecommendLoghubAppender<E> extends UnsynchronizedAppenderBase<E> {
     private String project;
     private String endpoint;
     private String accessKeyId;
@@ -153,7 +152,9 @@ public class RecommendLoghubAppender<E> extends LoghubAppender<E> {
             });
 
             try {
-                this.producer.send(this.projectConfig.getProject(), this.logStore, this.topic, this.source, logItems, new LoghubAppenderCallback(this, this.projectConfig.getProject(), this.logStore, this.topic, this.source, logItems));
+                this.producer.send(this.projectConfig.getProject(), this.logStore, this.topic, this.source, logItems,
+                        new RecommendLoghubAppenderCallback(this, this.projectConfig.getProject(), this.logStore,
+                                this.topic, this.source, logItems));
             } catch (Exception var9) {
                 this.addError("Failed to send log, project=" + this.project + ", logStore=" + this.logStore + ", topic=" + this.topic + ", source=" + this.source + ", logItem=" + logItems, var9);
             }

+ 37 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/RecommendLoghubAppenderCallback.java

@@ -0,0 +1,37 @@
+package com.tzld.piaoquan.recommend.server.common;
+
+
+import com.aliyun.openservices.aliyun.log.producer.Callback;
+import com.aliyun.openservices.aliyun.log.producer.Result;
+import com.aliyun.openservices.log.common.LogItem;
+
+import java.util.List;
+
+/**
+ * @author dyp
+ */
+public class RecommendLoghubAppenderCallback<E> implements Callback {
+    protected RecommendLoghubAppender<E> loghubAppender;
+    protected String project;
+    protected String logstore;
+    protected String topic;
+    protected String source;
+    protected List<LogItem> logItems;
+
+    public RecommendLoghubAppenderCallback(RecommendLoghubAppender<E> loghubAppender, String project, String logstore,
+                                           String topic, String source, List<LogItem> logItems) {
+        this.loghubAppender = loghubAppender;
+        this.project = project;
+        this.logstore = logstore;
+        this.topic = topic;
+        this.source = source;
+        this.logItems = logItems;
+    }
+
+    public void onCompletion(Result result) {
+        if (!result.isSuccessful()) {
+            this.loghubAppender.addError("Failed to send log, project=" + this.project + ", logStore=" + this.logstore + ", topic=" + this.topic + ", source=" + this.source + ", logItem=" + this.logItems + ", errorCode=" + result.getErrorCode() + ", errorMessage=" + result.getErrorMessage());
+        }
+
+    }
+}

+ 28 - 16
recommend-server-service/src/main/resources/logback-spring.xml

@@ -3,7 +3,7 @@
 <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
 <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
 <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
-<configuration  scan="true" scanPeriod="10 seconds">
+<configuration scan="true" scanPeriod="10 seconds">
 
     <!--为了防止进程退出时,内存中的数据丢失,请加上此选项-->
     <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
@@ -14,7 +14,8 @@
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
     <!-- 日志输出格式 -->
     <property name="LOG_PATTERN"
-              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}\\(%L\\) traceId=%X{traceId} - %msg%n" />
+              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}\\(%L\\) traceId=%X{traceId} - %msg%n"/>
+    <property name="mdcFields" value="traceId"></property>
 
     <!-- spring property使用方式 -->
     <springProperty name="LOG_PATH" source="logging.file.path"/>
@@ -25,9 +26,11 @@
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->
-    <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" />
+    <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{traceId} %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}\\(%L\\)){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
@@ -153,7 +156,7 @@
         </filter>
     </appender>
 
-    <appender name="loghubAppenderInfo" class="com.aliyun.openservices.log.logback.LoghubAppender">
+    <appender name="loghubAppenderInfo" class="com.tzld.piaoquan.recommend.server.common.RecommendLoghubAppender">
         <!--必选项-->
         <!-- 账号及网络配置 -->
         <endpoint>${aliyun_log_endpoint}</endpoint>
@@ -187,9 +190,12 @@
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
+        <mdcFields>
+            ${mdcFields}
+        </mdcFields>
     </appender>
 
-    <appender name="loghubAppenderWarn" class="com.aliyun.openservices.log.logback.LoghubAppender">
+    <appender name="loghubAppenderWarn" class="com.tzld.piaoquan.recommend.server.common.RecommendLoghubAppender">
         <!--必选项-->
         <!-- 账号及网络配置 -->
         <endpoint>${aliyun_log_endpoint}</endpoint>
@@ -223,9 +229,12 @@
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
+        <mdcFields>
+            ${mdcFields}
+        </mdcFields>
     </appender>
 
-    <appender name="loghubAppenderError" class="com.aliyun.openservices.log.logback.LoghubAppender">
+    <appender name="loghubAppenderError" class="com.tzld.piaoquan.recommend.server.common.RecommendLoghubAppender">
         <!--必选项-->
         <!-- 账号及网络配置 -->
         <endpoint>${aliyun_log_endpoint}</endpoint>
@@ -259,6 +268,9 @@
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
+        <mdcFields>
+            ${mdcFields}
+        </mdcFields>
     </appender>
 
     <!--
@@ -303,14 +315,14 @@
     </springProfile>
 
     <root level="info">
-        <appender-ref ref="CONSOLE" />
-        <appender-ref ref="DEBUG_FILE" />
-        <appender-ref ref="INFO_FILE" />
-        <appender-ref ref="WARN_FILE" />
-        <appender-ref ref="ERROR_FILE" />
-        <appender-ref ref="loghubAppenderInfo" />
-        <appender-ref ref="loghubAppenderWarn" />
-        <appender-ref ref="loghubAppenderError" />
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+        <appender-ref ref="loghubAppenderInfo"/>
+        <appender-ref ref="loghubAppenderWarn"/>
+        <appender-ref ref="loghubAppenderError"/>
     </root>
 
 </configuration>