切断クラスレコードアクセスログの作成
3315 ワード
1、依存を追加
2.切麺類の作成
1.2.47
com.alibaba
fastjson
${fastjson.version}
org.springframework.boot
spring-boot-starter-aop
2.切麺類の作成
import javax.servlet.http.HttpServletRequest;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.richfit.common.utils.HttpContextUtils;
import com.richfit.common.utils.IpUtils2;
@Aspect
@Component
public class OperationLogAspect {
private Logger logger = LoggerFactory.getLogger(getClass());
// pointcut1 xxx controller
private final String pointcut1 = "execution(* com.xxx.modules.xxx.controller..*.*(..))";
// pointcut2 login
private final String pointcut2 = "execution(* com.xxx.modules.sys.controller.SysLoginController.login(..))";
//
@Pointcut(value = pointcut1)
public void log1() {
}
@Pointcut(value = pointcut2)
public void log2() {
}
@Around(value = "log1() || log2()")
public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
String ipAddr = IpUtils2.getIpAddr(request); // ip , 192.168.152.152
int port = request.getServerPort(); //
StringBuffer url = request.getRequestURL(); //
String method = request.getMethod(); // (POST/GET )
String protocol = request.getProtocol(); //
Object result = null;
StringBuilder sbLog = new StringBuilder("
");
try {
sbLog.append(String.format("IP :%s\r
", ipAddr));
sbLog.append(String.format(" :%s\r
", port));
sbLog.append(String.format(" :%s\r
", url));
sbLog.append(String.format(" :%s\r
", method));
sbLog.append(String.format(" :%s\r
", protocol));
sbLog.append(String.format(" :%s\r
", proceedingJoinPoint.getTarget().getClass().getName()));
MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
sbLog.append(String.format(" :%s\r
", methodSignature.getMethod().getName()));
Object[] args = proceedingJoinPoint.getArgs();
for (Object o : args) {
sbLog.append(String.format(" :%s\r
", JSON.toJSON(o)));
}
long startTime = System.currentTimeMillis();
result = proceedingJoinPoint.proceed();
long endTime = System.currentTimeMillis();
sbLog.append(String.format(" :%s\r
", JSON.toJSON(result)));
sbLog.append(String.format(" :%ss", endTime - startTime));
} catch (Exception ex) {
sbLog.append(String.format(" :%s", ex.getMessage()));
} finally {
logger.info(sbLog.toString());
}
return result;
}
}