This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 443adfc16293bbe5dc2576897fa04d96f9dd33be
Author: jlf <longfei.ji...@kyligence.io>
AuthorDate: Mon Jun 5 17:17:22 2023 +0800

    KYLIN-5708 add LOG_TIME_PATTERN_WITH_TRACE_ID in getJobLogPattern
---
 .../org/apache/kylin/rest/interceptor/KEFilter.java   |  6 ++++--
 .../java/org/apache/kylin/rest/util/HttpUtil.java     |  4 +++-
 .../org/apache/kylin/common/constant/Constants.java   |  1 +
 .../main/java/org/apache/kylin/tool/KylinLogTool.java | 19 ++++++++++++++-----
 .../java/org/apache/kylin/tool/KylinLogToolTest.java  | 15 +++++++++++++--
 5 files changed, 35 insertions(+), 10 deletions(-)

diff --git 
a/src/common-service/src/main/java/org/apache/kylin/rest/interceptor/KEFilter.java
 
b/src/common-service/src/main/java/org/apache/kylin/rest/interceptor/KEFilter.java
index 071a4ab619..266fef735a 100644
--- 
a/src/common-service/src/main/java/org/apache/kylin/rest/interceptor/KEFilter.java
+++ 
b/src/common-service/src/main/java/org/apache/kylin/rest/interceptor/KEFilter.java
@@ -18,6 +18,8 @@
 
 package org.apache.kylin.rest.interceptor;
 
+import static org.apache.kylin.common.constant.Constants.TRACE_ID;
+
 import java.io.IOException;
 
 import javax.servlet.FilterChain;
@@ -63,14 +65,14 @@ public class KEFilter extends OncePerRequestFilter {
 
         // Set traceId for KE
         String traceId = RandomUtil.randomUUIDStr();
-        ThreadContext.put("traceId", String.format("traceId: %s ", traceId));
+        ThreadContext.put(TRACE_ID, String.format(TRACE_ID + ": %s ", 
traceId));
 
         filterChain.doFilter(request, response);
 
         // clean ThreadContext
         ThreadContext.clearAll();
         // set `traceId` attribute for accesslog
-        request.setAttribute("traceId", traceId);
+        request.setAttribute(TRACE_ID, traceId);
     }
 
 }
diff --git 
a/src/common-service/src/main/java/org/apache/kylin/rest/util/HttpUtil.java 
b/src/common-service/src/main/java/org/apache/kylin/rest/util/HttpUtil.java
index 29001b6b36..c073687604 100644
--- a/src/common-service/src/main/java/org/apache/kylin/rest/util/HttpUtil.java
+++ b/src/common-service/src/main/java/org/apache/kylin/rest/util/HttpUtil.java
@@ -18,6 +18,8 @@
 
 package org.apache.kylin.rest.util;
 
+import static org.apache.kylin.common.constant.Constants.TRACE_ID;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.util.JsonUtil;
 import org.apache.kylin.rest.response.ErrorResponse;
@@ -73,7 +75,7 @@ public class HttpUtil {
         sb.append("RemoteAddr: ").append(request.getRemoteAddr()).append("\n");
         sb.append("RemoteUser: ").append(request.getRemoteUser()).append("\n");
         sb.append("Session: 
").append(formatSession(request.getSession(false))).append("\n");
-        Object attr = request.getAttribute("traceId");
+        Object attr = request.getAttribute(TRACE_ID);
         if (attr != null) {
             sb.append("TraceId: ").append(attr).append("\n");
         }
diff --git 
a/src/core-common/src/main/java/org/apache/kylin/common/constant/Constants.java 
b/src/core-common/src/main/java/org/apache/kylin/common/constant/Constants.java
index 2002960311..a49d012fa2 100644
--- 
a/src/core-common/src/main/java/org/apache/kylin/common/constant/Constants.java
+++ 
b/src/core-common/src/main/java/org/apache/kylin/common/constant/Constants.java
@@ -50,6 +50,7 @@ public class Constants {
     public static final String KYLIN_SOURCE_JDBC_DRIVER_KEY = 
"kylin.source.jdbc.driver";
 
     public static final String UNLIMITED = "Unlimited";
+    public static final String TRACE_ID = "traceId";
 
     public static final String SNAPSHOT_AUTO_REFRESH = "snapshot_auto_refresh";
     public static final String VIEW_MAPPING = "view_mapping";
diff --git a/src/tool/src/main/java/org/apache/kylin/tool/KylinLogTool.java 
b/src/tool/src/main/java/org/apache/kylin/tool/KylinLogTool.java
index f237ac5b7b..6139876daf 100644
--- a/src/tool/src/main/java/org/apache/kylin/tool/KylinLogTool.java
+++ b/src/tool/src/main/java/org/apache/kylin/tool/KylinLogTool.java
@@ -18,6 +18,7 @@
 package org.apache.kylin.tool;
 
 import static org.apache.kylin.common.constant.Constants.KE_LICENSE;
+import static org.apache.kylin.common.constant.Constants.TRACE_ID;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -79,12 +80,18 @@ public class KylinLogTool {
 
     public static final String SECOND_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
 
-    private static final String LOG_TIME_PATTERN = 
"^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})";
+    private static final String TIME_PATTERN = 
"([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})";
+
+    private static final String LOG_TIME_PATTERN = "^" + TIME_PATTERN;
+
+    private static final String UUID_PATTERN = 
"([0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12})";
+
+    private static final String LOG_TIME_PATTERN_WITH_TRACE_ID = "^(" + 
TRACE_ID + ": " + UUID_PATTERN + " )?" + TIME_PATTERN;
 
     // 2019-11-11 09:30:04,628 INFO  
[FetchJobWorker(project:test_fact)-p-94-t-94] threadpool.NDefaultScheduler : 
start check project test_fact
     private static final String LOG_PATTERN = 
"([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}) ([^ ]*)[ 
]+\\[(.*)\\] ([^: ]*) :([\\n\\r. ]*)";
 
-    private static final String QUERY_LOG_PATTERN = "Query 
([0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12})";
+    private static final String QUERY_LOG_PATTERN = "Query " + UUID_PATTERN;
 
     private static final int EXTRA_LINES = 100;
 
@@ -106,17 +113,19 @@ public class KylinLogTool {
     public static String getJobLogPattern(String jobId) {
         Preconditions.checkArgument(StringUtils.isNotEmpty(jobId));
         return String.format(Locale.ROOT, 
"%s(.*JobWorker.*jobid:%s.*)|%s.*%s", LOG_TIME_PATTERN, jobId.substring(0, 8),
-                LOG_TIME_PATTERN, jobId);
+                LOG_TIME_PATTERN_WITH_TRACE_ID, jobId);
     }
 
     // group(1) is first  ([0-9]{4}-[0-9]{2}-[0-9]{2} 
[0-9]{2}:[0-9]{2}:[0-9]{2})
     // group(2) is (.*JobWorker.*jobid:%s.*)
-    // group(3) is second ([0-9]{4}-[0-9]{2}-[0-9]{2} 
[0-9]{2}:[0-9]{2}:[0-9]{2})
+    // group(3) is first 'traceId: 
([0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}) '
+    // group(4) is first 
'([0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12})'
+    // group(5) is second  ([0-9]{4}-[0-9]{2}-[0-9]{2} 
[0-9]{2}:[0-9]{2}:[0-9]{2})
     @VisibleForTesting
     public static String getJobTimeString(Matcher matcher) {
         String result = matcher.group(1);
         if (StringUtils.isEmpty(result)) {
-            result = matcher.group(3);
+            result = matcher.group(5);
         }
         return result;
     }
diff --git a/src/tool/src/test/java/org/apache/kylin/tool/KylinLogToolTest.java 
b/src/tool/src/test/java/org/apache/kylin/tool/KylinLogToolTest.java
index 40eb1c6837..50f53366a9 100644
--- a/src/tool/src/test/java/org/apache/kylin/tool/KylinLogToolTest.java
+++ b/src/tool/src/test/java/org/apache/kylin/tool/KylinLogToolTest.java
@@ -543,8 +543,8 @@ public class KylinLogToolTest extends 
NLocalFileMetadataTestCase {
         String jobId = "d0f45b72-db2f-407b-9d6f-7cfe6f6624e8";
         String patternString = KylinLogTool.getJobLogPattern(jobId);
         String log;
-        Assert.assertEquals(
-                
"^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})(.*JobWorker.*jobid:d0f45b72.*)|^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}).*d0f45b72-db2f-407b-9d6f-7cfe6f6624e8",
+        
Assert.assertEquals("^([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})(.*JobWorker.*jobid:d0f45b72.*)"
+                + "|^(traceId: 
([0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}) 
)?([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}).*d0f45b72-db2f-407b-9d6f-7cfe6f6624e8",
                 patternString);
         Pattern pattern = Pattern.compile(patternString);
         log = "2019-09-02T02:38:16,868 INFO  
[FetchJobWorker(project:a_test)-p-9-t-9] runners.FetcherRunner : fetcher 
schedule d0f45b72-db2f-407b-9d6f-7cfe6f6624e8";
@@ -555,6 +555,17 @@ public class KylinLogToolTest extends 
NLocalFileMetadataTestCase {
         matcher = pattern.matcher(log);
         Assert.assertTrue(matcher.find());
         Assert.assertEquals("2019-09-02T02:40:07", 
KylinLogTool.getJobTimeString(matcher));
+        log = "traceId: ae0c0172-54b0-973f-de6c-3aab18289649 
2019-09-02T02:38:16,868 INFO  [FetchJobWorker(project:a_test)-p-9-t-9] 
runners.FetcherRunner : fetcher schedule d0f45b72-db2f-407b-9d6f-7cfe6f6624e8";
+        matcher = pattern.matcher(log);
+        Assert.assertTrue(matcher.find());
+        Assert.assertEquals("2019-09-02T02:38:16", 
KylinLogTool.getJobTimeString(matcher));
+        log = "traceId: 4b8324bb-6467-d0b6-8087-9c71c28cc443 
2023-05-31T13:51:57,945 INFO  [test2] [http-nio-17971-exec-5] 
handler.AbstractJobHandler : Job 
JobParam(jobId=d0f45b72-db2f-407b-9d6f-7cfe6f6624e8, "
+                + "targetSegments=[edbd2366-f8b3-0f29-39c1-dcf03895a295], 
targetLayouts=[], owner=ADMIN, model=4b0a4399-0903-18ec-5d7f-52eb6c96df31, 
project=test2, jobTypeEnum=IN"
+                + "C_BUILD, ignoredSnapshotTables=null, targetPartitions=[], 
targetBuckets=[], priority=3, yarnQueue=null, tag=null, condition={}, "
+                + "processLayouts=[LayoutEntity{id=160001}, 
LayoutEntity{id=170001}], deleteLayouts=null, 
secondStorageDeleteLayoutIds=null) creates job 
NSparkCubingJob{id=d0f45b72-db2f-407b-9d6f-7cfe6f6624e8, name=INC_BUILD, 
state=READY}";
+        matcher = pattern.matcher(log);
+        Assert.assertTrue(matcher.find());
+        Assert.assertEquals("2023-05-31T13:51:57", 
KylinLogTool.getJobTimeString(matcher));
     }
 
     @Test

Reply via email to