![JAR search and dependency download from the Maven repository](/logo.png)
com.gitee.fufu669.aspect.LogAspect Maven / Gradle / Ivy
package com.gitee.fufu669.aspect;
import com.gitee.fufu669.utils.CacheJsonUtil;
import io.swagger.annotations.ApiOperation;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
@Aspect
@Component
@SuppressWarnings({"rawtypes"})
/** @author wangfupeng */
public class LogAspect {
public static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
private static String CONTENT_TYPE="Content-Type";
@Autowired
private HttpServletRequest request;
@Around("within(com.gitee.fufu669.aspect.Logging+)")
public Object logger(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long begin = System.currentTimeMillis();
String methodDescription = "NONE";
Method method = ((MethodSignature) proceedingJoinPoint.getSignature()).getMethod();
for (Annotation annotation : method.getAnnotations()) {
if (annotation instanceof ApiOperation) {
methodDescription = ((ApiOperation) annotation).value();
}
}
StringBuilder sb = new StringBuilder("\n%%%%%%%%%%%%【")
.append(methodDescription).append(" ")
.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
.append("】 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
sb.append("Controller : ").append(proceedingJoinPoint.getTarget().getClass().getSimpleName()).append("\n");
sb.append("Method : ").append(request.getMethod()).append("\n");
String uri = request.getRequestURI();
if (uri != null) {
sb.append("URL : ").append(uri).append("\n");
}
if (request.getHeader(CONTENT_TYPE) != null
&& request.getHeader(CONTENT_TYPE).equals(MediaType.APPLICATION_JSON_VALUE)
&& !"GET".equals(request.getMethod())) {
Object[] args = proceedingJoinPoint.getArgs();
if (args.length > 0) {
for (Object arg : args) {
sb.append("PostArg : ").append(arg).append("\n");
}
}
}
Enumeration e = request.getParameterNames();
if (e.hasMoreElements()) {
sb.append("Parameter : ");
while (e.hasMoreElements()) {
String name = e.nextElement();
String[] values = request.getParameterValues(name);
if (values.length == 1) {
sb.append(name).append("=").append(values[0]);
} else {
sb.append(name).append("[]={");
for (int i = 0, length = values.length; i < length; i++) {
if (i > 0) {
sb.append(",");
}
sb.append(values[i]);
}
sb.append("}");
}
sb.append(" ");
}
sb.append("\n");
}
logger.info("\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%---调用之前---%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"+sb.toString()+"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
Object response = proceedingJoinPoint.proceed();
if (response == null) {
sb.append("return : ").append("null").append("\n");
}
else {
sb.append("return : ").append(CacheJsonUtil.toJson(response)).append("\n");
}
sb.append("tcost : ").append(System.currentTimeMillis() - begin).append("ms").append("\n");
sb.append("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
logger.info("\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%---调用之后---%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"+sb.toString());
return response;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy