package com.mryan.aop_mylog.utils
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.Signature
import org.aspectj.lang.annotation.Around
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.reflect.MethodSignature
import org.springframework.stereotype.Component
import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.multipart.MultipartFile
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import java.util.UUID
import java.util.logging.Logger
@Aspect
@Component
public class LogAspect {
private static Logger log = Logger.getLogger("LogAspect.class")
@Around("execution(* com.mryan.aop_mylog.controller..*.*(..))")
@ResponseBody
public Object logAround(ProceedingJoinPoint joinPoint) throws Exception {
String uuid = UUID.randomUUID().toString()
Object result = null
String className = joinPoint.getTarget().getClass().getSimpleName()
Signature signature = joinPoint.getSignature()
MethodSignature methodSignature = (MethodSignature) signature
String methodName = methodSignature.getName()
StringBuilder paramInSb = null
StringBuilder paramOutSb = null
Object[] args = joinPoint.getArgs()
if (args.length > 0) {
paramInSb = new StringBuilder()
String[] argNames = methodSignature.getParameterNames()
paramInSb.append(className).append(".").append(methodName).append("-->").append(uuid).append("入参---->")
for (int i = 0
if ((!(args[i] instanceof MultipartFile)) && (!(args[i] instanceof HttpServletRequest)) && (!(args[i] instanceof HttpServletResponse) && (!(args[i] instanceof MultipartFile[])))) {
paramInSb.append(argNames[i]).append(":")
// append(JSON.toJSONString(args[i]))
}
}
log.info(paramInSb.toString())
}
try {
result = joinPoint.proceed()
paramOutSb = new StringBuilder()
paramOutSb.append(className).append(".").append(methodName).append("-->").append(uuid).append("出参:")
// .append(JSON.toJSONString(result))
log.info(paramOutSb.toString())
} catch (Exception e) {
// log.error("Log-->方法执行异常")
throw e
} catch (Throwable throwable) {
// log.error("Log-->方法执行错误", throwable)
// throw new Exception(ResponseCode.FAILURE, "未知错误")
}
return result
}
}