Переглянути джерело

优化多线程异步执行异常日志处理逻辑

Woody 1 місяць тому
батько
коміт
f86b06ced0

+ 5 - 2
framework-base/src/main/java/com/chelvc/framework/base/context/ThreadContextHolder.java

@@ -4,6 +4,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ForkJoinPool;
 import java.util.function.Supplier;
+import javax.servlet.http.HttpServletRequest;
 
 import com.chelvc.framework.common.util.ThreadUtils;
 import lombok.NonNull;
@@ -98,12 +99,13 @@ public final class ThreadContextHolder {
      */
     public static CompletableFuture<Void> run(@NonNull Executor executor, @NonNull Runnable runnable) {
         Session session = SessionContextHolder.getSession(false);
+        HttpServletRequest request = SessionContextHolder.getRequest();
         return CompletableFuture.runAsync(() -> {
             SessionContextHolder.setSession(session);
             try {
                 runnable.run();
             } catch (Exception e) {
-                log.error(e.getMessage(), e);
+                LoggingContextHolder.error(log, request, e);
             } finally {
                 SessionContextHolder.removeSessionContext();
             }
@@ -131,12 +133,13 @@ public final class ThreadContextHolder {
      */
     public static <T> CompletableFuture<T> supply(@NonNull Executor executor, @NonNull Supplier<T> supplier) {
         Session session = SessionContextHolder.getSession(false);
+        HttpServletRequest request = SessionContextHolder.getRequest();
         return CompletableFuture.supplyAsync(() -> {
             SessionContextHolder.setSession(session);
             try {
                 return supplier.get();
             } catch (Exception e) {
-                log.error(e.getMessage(), e);
+                LoggingContextHolder.error(log, request, e);
             } finally {
                 SessionContextHolder.removeSessionContext();
             }