博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aop 日志
阅读量:6223 次
发布时间:2019-06-21

本文共 1613 字,大约阅读时间需要 5 分钟。

hot3.png

package cn.enjoy.utils;

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.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

import java.util.Enumeration;

public class WebLogAspect {

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

    @Pointcut("execution(public * cn.enjoy.controller.*.*(..))")

    public void webLog() {
    }

    @Before("webLog()")

    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        // 记录下请求内容
        logger.info("URL : " + request.getRequestURL().toString());
        logger.info("HTTP_METHOD : " + request.getMethod());
        logger.info("IP : " + request.getRemoteAddr());
        Enumeration<String> enu = request.getParameterNames();
        while (enu.hasMoreElements()) {
            String name = (String) enu.nextElement();
            logger.info("name:{},value:{}", name, request.getParameter(name));
        }
    }

    @AfterReturning(returning = "ret", pointcut = "webLog()")

    public void doAfterReturning(Object ret) throws Throwable {
        // 处理完请求,返回内容
        logger.info("RESPONSE : " + ret);
    }
}

转载于:https://my.oschina.net/u/2351011/blog/3054218

你可能感兴趣的文章
AdaBoostClassifier实战
查看>>
Android如何配置init.rc中的开机启动进程(service)【转】
查看>>
redis09---redis 服务器端命令
查看>>
054——VUE中vue-router之实例讲解定义一下单页面路由
查看>>
C语言 - .c和.h文件的困惑
查看>>
ASP .NET CORE MVC 部署Windows 系统上 IIS具体步骤---.Net Core 部署到 IIS位系统中的步骤...
查看>>
Python2.x与3.x版本区别
查看>>
大数据时代的结构化存储—HBase在阿里的应用实践
查看>>
利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)
查看>>
在AD中存取照片
查看>>
sqlite3 支持的关联查询
查看>>
Android Studio之高德地图实现定位和3D地图显示
查看>>
JS实现PC、Android、IOS端的点击按钮复制内容功能
查看>>
linux学习一个服务(未完)
查看>>
http加密原理
查看>>
JSON转换类
查看>>
View的setTag和getTag使用
查看>>
Android框架之路——Fragmentation的使用(流式交互Demo)
查看>>
leetcode 504. Base 7
查看>>
Python首次安装后运行报错(0xc000007b)的解决方法
查看>>