首页>代码>Spring boot+springdata jpa+thymeleaf+mysql手机商城(带后台管理系统)>/mall/src/main/java/priv/jesse/mall/aspect/WebLogAspect.java
package priv.jesse.mall.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

/**
 * WEB层日志切面,用来记录请求信息
 */
@Aspect
@Order(5)
@Component
public class WebLogAspect {

    private static final Logger LOGGER = LoggerFactory.getLogger(WebLogAspect.class);

    ThreadLocal<Long> startTime = new ThreadLocal<>();

    @Pointcut("execution(public * priv.jesse.mall.controller.*.*(..))")//切入点
    public void webLog() {
    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        startTime.set(System.currentTimeMillis());

        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();

        // 记录下请求内容
        LOGGER.info("**************Start API Request**************");
        LOGGER.info("URL : " + request.getRequestURI().toString());
        LOGGER.info("HTTP_METHOD : " + request.getMethod());
        LOGGER.info("IP : " + request.getRemoteAddr());
        LOGGER.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
        LOGGER.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
    }

    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void doAfterReturning(Object ret) throws Throwable {
        // 处理完请求,返回内容
        LOGGER.info("RESPONSE : " + ret);
        LOGGER.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get()));
        LOGGER.info("***************End API Request***************");
    }


}

最近下载更多
dane168  LV8 2月17日
212828939  LV16 2024年3月13日
www3209  LV1 2024年3月2日
wbw123  LV5 2024年3月1日
3175665836  LV2 2023年12月7日
SDLFJL  LV6 2023年8月15日
zy3344  LV1 2023年7月3日
yzshabzbbdvw  LV4 2023年4月20日
微信网友_5988700142981120  LV2 2023年4月12日
计算机暴龙战士  LV19 2023年4月2日
最近浏览更多
陈小灏  LV18 2月21日
dane168  LV8 2月17日
王愉悦  LV4 2024年12月3日
颜菜菜  LV2 2024年9月8日
cy5201 2024年6月24日
暂无贡献等级
dageyi 2024年6月12日
暂无贡献等级
郭宇航裹裹  LV5 2024年6月9日
f22m1a2b2  LV17 2024年5月30日
来一杯西瓜冰咩  LV6 2024年5月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友