切断クラスレコードアクセスログの作成

3315 ワード

1、依存を追加

    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; } }