Spring项目打印请求信息并点击信心进入请求方法

package com.as.common.interceptor;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.logging.Logger;

import javax.servlet.http.HttpServletRequest;

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

import com.fasterxml.jackson.databind.ObjectMapper;
/**
 * 
 * @Description 打印请求信息
 * @author 张银彪 
 * @category
 * @date 2019年12月12日 下午5:50:26 
 * @version V0.1
 */
@Aspect
@Component
public class InfoPrint {
	public final Logger logger=Logger.getLogger("infolog");;
  //private static Logger log = LoggerFactory.getLogger(InfoPrint.class);
 
  private final ObjectMapper mapper;
  @Value("${xc.isDev}")
	boolean isDev=false;
  @Autowired
  public InfoPrint(ObjectMapper mapper) {
    this.mapper = mapper;
  }
 //使用此注解才可以进入打印
  @Pointcut("@within(org.springframework.web.bind.annotation.RestController)")
  public void webLog() {
  }
 
  @Before("webLog()")
  public void doBefore(JoinPoint joinPoint) {
	  HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .getRequestAttributes()).getRequest();
	  System.out.println("\r\n \r\n");
	  String replace = joinPoint.getSignature().getDeclaringTypeName().replace(".", "\\");
	  File file = new File(System.getProperty("user.dir")+"/src/main/java/"+replace+".java");
	  String methodName = joinPoint.getSignature().getName();
      StringBuilder result = new StringBuilder();
      int i=1;
      if (isDev) {
    	   try{
    	          BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));//构造一个BufferedReader类来读取文件
    	          String s = null;
    	          while((s = br.readLine())!=null){//使用readLine方法,一次读一行
    	              result.append( System.lineSeparator() + s);
    	              if (s.contains(methodName+"(")) {
    					break;
    	              }
    	              i++;
    	          }
    	          br.close();
    	      }catch(Exception e){
    	          e.printStackTrace();
    	      }
    		  
      }
	  System.out.println("------------Action Info Start------------");
      System.out.println("目标方法名:->\t "+methodName+"()");
      System.out.println("目标跳转类:->\t "+joinPoint.getSignature().getDeclaringTypeName()+".("+joinPoint.getSignature().getDeclaringType().getSimpleName()+".java:"+i+")");
      Map<String, String[]> parameterMap = request.getParameterMap();
      Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();
      for (Entry<String, String[]> entry : entrySet) {
    	  System.out.println("请求参数:  ->\t "+entry.getKey()+" = "+entry.getValue()[0]);
	}
  }
 
  @AfterReturning(returning = "response", pointcut = "webLog()")
  public void doAfterReturning(Object response) throws Throwable {
    if (response != null) {
    	System.out.println("响应数据:  ->\t " + mapper.writeValueAsString(response));
    }
    System.out.println("------------Action Info End------------");
    System.out.println("\r\n \r\n");
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值