Kaynağa Gözat

增强异常日志记录,捕获完整堆栈信息

wangyunpeng 12 saat önce
ebeveyn
işleme
8a4351f8ad

+ 13 - 1
server/src/main/java/com/tzld/videoVector/aop/LogRequestAop.java

@@ -41,6 +41,8 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.Collections;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map;
@@ -106,7 +108,17 @@ public class LogRequestAop {
 
 
     @AfterThrowing(pointcut = "requestLog()", throwing = "ex")
     @AfterThrowing(pointcut = "requestLog()", throwing = "ex")
     public void afterThrowing(JoinPoint point, Exception ex) {
     public void afterThrowing(JoinPoint point, Exception ex) {
-        logRecord(point, ex.toString());
+        logRecord(point, getStackTraceString(ex));
+    }
+
+    /**
+     * 获取异常的完整堆栈信息
+     */
+    private String getStackTraceString(Exception ex) {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        ex.printStackTrace(pw);
+        return sw.toString();
     }
     }
 
 
     private void logRecord(JoinPoint point, String message) {
     private void logRecord(JoinPoint point, String message) {