diff --git a/src/main/java/com/yunhai/bschclassmanage/aspect/SysOperationLogAspect.java b/src/main/java/com/yunhai/bschclassmanage/aspect/SysOperationLogAspect.java index 52d8357..82e8713 100644 --- a/src/main/java/com/yunhai/bschclassmanage/aspect/SysOperationLogAspect.java +++ b/src/main/java/com/yunhai/bschclassmanage/aspect/SysOperationLogAspect.java @@ -9,6 +9,7 @@ import com.yunhai.bschclassmanage.utils.OtherUtil; import com.yunhai.bschclassmanage.utils.SensitiveDataUtil; import com.yunhai.bschclassmanage.utils.UserContext; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -46,6 +47,7 @@ public class SysOperationLogAspect { "com.yunhai.bschclassmanage.controller.api.SysOperationLogController" // 审计日志查询 ); private static final int DEFAULT_MAX_RESPONSE_SIZE = 10240; + private static final int MAX_ERROR_MSG = 8000; @Autowired private ISysOperationLogService sysOperationLogService; @@ -72,11 +74,7 @@ public class SysOperationLogAspect { return result; } catch (Throwable e) { entity.setStatusCode(500); - String msg = e.getMessage(); - if (msg == null || msg.trim().isEmpty()) { - msg = e.getClass().getName(); - } - entity.setErrorMsg(truncate(msg, 2000)); + entity.setErrorMsg(buildErrorMsg(e)); throw e; } finally { entity.setCostTime(System.currentTimeMillis() - start); @@ -145,6 +143,12 @@ public class SysOperationLogAspect { return a != null ? a.getRequest() : null; } + private String buildErrorMsg(Throwable e) { + String msg = e.getMessage(); + String head = (msg == null || msg.trim().isEmpty()) ? e.getClass().getName() : msg; + return truncate(head + System.lineSeparator() + ExceptionUtils.getStackTrace(e), MAX_ERROR_MSG); + } + private String truncate(String s, int max) { return s != null && s.length() > max ? s.substring(0, max) : s; }