From 65ca50935315a89e219b7c974caf95dc28895ffc Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Thu, 16 Oct 2025 08:37:56 +0800
Subject: [PATCH] 修改
---
hazmat-framework/src/main/java/com/gkhy/hazmat/framework/aspectj/LogAspect.java | 120 ++++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 88 insertions(+), 32 deletions(-)
diff --git a/hazmat-framework/src/main/java/com/gkhy/hazmat/framework/aspectj/LogAspect.java b/hazmat-framework/src/main/java/com/gkhy/hazmat/framework/aspectj/LogAspect.java
index c2120ab..5c67aa1 100644
--- a/hazmat-framework/src/main/java/com/gkhy/hazmat/framework/aspectj/LogAspect.java
+++ b/hazmat-framework/src/main/java/com/gkhy/hazmat/framework/aspectj/LogAspect.java
@@ -55,40 +55,96 @@
*
* @param joinPoint 切点
*/
- @Around("logPointCut()")
- public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable{
- SysUser user= SecurityUtils.getLoginUserWithoutError()!=null?SecurityUtils.getLoginUserWithoutError().getUser():null;
- long startTime = System.currentTimeMillis();
- //获取当前请求对象
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = attributes.getRequest();
- Signature signature = joinPoint.getSignature();
- MethodSignature methodSignature = (MethodSignature) signature;
- Method method = methodSignature.getMethod();
- StringBuffer requestURL = request.getRequestURL();
- JSONObject webLog = new JSONObject();
- String urlStr = request.getRequestURL().toString();
- webLog.put("basePath", StringUtils.removeSuffix(urlStr, URLUtil.url(urlStr).getPath()));
- webLog.put("ip", ServletUtil.getClientIP(request,null));
- webLog.put("method",request.getMethod());
- Object params=getParameter(method, joinPoint.getArgs());
+// @Around("logPointCut()")
+// public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable{
+//
+// SysUser user= SecurityUtils.getLoginUserWithoutError()!=null?SecurityUtils.getLoginUserWithoutError().getUser():null;
+// long startTime = System.currentTimeMillis();
+// //获取当前请求对象
+// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+// HttpServletRequest request = attributes.getRequest();
+// Signature signature = joinPoint.getSignature();
+// MethodSignature methodSignature = (MethodSignature) signature;
+// Method method = methodSignature.getMethod();
+// StringBuffer requestURL = request.getRequestURL();
+// JSONObject webLog = new JSONObject();
+// String urlStr = request.getRequestURL().toString();
+// webLog.put("basePath", StringUtils.removeSuffix(urlStr, URLUtil.url(urlStr).getPath()));
+// webLog.put("ip", ServletUtil.getClientIP(request,null));
+// webLog.put("method",request.getMethod());
+// Object params=getParameter(method, joinPoint.getArgs());
+//
+// webLog.put("parameter",StringUtils.sub(JSON.toJSONString(params),0,2000));
+// webLog.put("uri",request.getRequestURI());
+// webLog.put("url",requestURL.toString());
+// if(user!=null) {
+// webLog.put("userName", user.getName());
+// }
+// log.info(webLog.toString());
+// Object result = joinPoint.proceed();
+// if (result == null) {
+// //如果切到了 没有返回类型的void方法,这里直接返回
+// return null;
+// }
+// long endTime = System.currentTimeMillis();
+// webLog.put("result",StringUtils.sub(JSON.toJSONString(result),0,20000));
+// webLog.put("spendTime",endTime - startTime);
+// log.info(webLog.toString());
+// return result;
+// }
- webLog.put("parameter",StringUtils.sub(JSON.toJSONString(params),0,2000));
- webLog.put("uri",request.getRequestURI());
- webLog.put("url",requestURL.toString());
- if(user!=null) {
- webLog.put("userName", user.getName());
+ @Around("logPointCut()")
+ public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
+ // 初始化日志对象
+ JSONObject webLog = new JSONObject();
+ Object result = null;
+ long startTime = System.currentTimeMillis();
+
+ try {
+ // 1. 前置日志记录(单独try-catch防止此处异常影响主流程)
+ try {
+ SysUser user = SecurityUtils.getLoginUserWithoutError() != null
+ ? SecurityUtils.getLoginUserWithoutError().getUser() : null;
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+
+ // 构建日志对象
+ webLog.put("basePath", StringUtils.removeSuffix(request.getRequestURL().toString(), URLUtil.url(request.getRequestURL().toString()).getPath()));
+ webLog.put("ip", ServletUtil.getClientIP(request, null));
+ webLog.put("method", request.getMethod());
+ webLog.put("uri", request.getRequestURI());
+ webLog.put("url", request.getRequestURL().toString());
+
+ // 方法参数记录
+ Signature signature = joinPoint.getSignature();
+ MethodSignature methodSignature = (MethodSignature) signature;
+ Object params = getParameter(methodSignature.getMethod(), joinPoint.getArgs());
+ webLog.put("parameter", StringUtils.sub(JSON.toJSONString(params), 0, 2000));
+
+ if(user != null) {
+ webLog.put("userName", user.getName());
+ }
+ log.info("[AOP-LOG] 请求日志: {}", webLog.toString());
+ } catch (Exception preLogEx) {
+ log.error("[AOP-LOG] 前置日志记录异常", preLogEx);
+ }
+
+ // 2. 核心业务执行(不catch,让业务异常正常抛出)
+ result = joinPoint.proceed();
+
+ } finally {
+ try {
+ // 3. 后置日志记录(确保始终执行,单独catch防止异常传播)
+ long endTime = System.currentTimeMillis();
+ if(result != null) {
+ webLog.put("result", StringUtils.sub(JSON.toJSONString(result), 0, 20000));
+ }
+ webLog.put("spendTime", endTime - startTime);
+ log.info("[AOP-LOG] 响应日志: {}", webLog.toString());
+ } catch (Exception postLogEx) {
+ log.error("[AOP-LOG] 后置日志记录异常", postLogEx);
+ }
}
- log.info(webLog.toString());
- Object result = joinPoint.proceed();
- if (result == null) {
- //如果切到了 没有返回类型的void方法,这里直接返回
- return null;
- }
- long endTime = System.currentTimeMillis();
- webLog.put("result",StringUtils.sub(JSON.toJSONString(result),0,2000));
- webLog.put("spendTime",endTime - startTime);
- log.info(webLog.toString());
return result;
}
--
Gitblit v1.9.2