网站首页 文章专栏 spring aop记录日志解析request对象
spring aop记录日志解析request对象
编辑时间:2019-02-28 17:55:32 作者:田泽 浏览量:214

前言

    我项目用到了springBoot通过aop注解去记录日志,通过aop注解记录日志的方法很多百度一下就会有。

我这里说下解析方法参数的问题,如果方法参数是一个对象的话直接转成json字符串存库就行,如果方法参数是request的话就会报错。

解决方法是捕捉异常,在catch中去遍历request中的参数并且转换成json对象。

代码

    /**
* 遍历方法参数
* @param joinPoint
* @return
*/
private JSONObject getParams(JoinPoint joinPoint) {
//获取参数值
Object[] args = joinPoint.getArgs();
if (args == null) {
return null;
}
JSONObject params = new JSONObject();
//对象接收参数
try {
String data = JSON.toJSONString(joinPoint.getArgs()[0]);
params = JSON.parseObject(data);
}
//普通参数传入
catch (JSONException e){
//获取参数名
HttpServletRequest req = (HttpServletRequest) joinPoint.getArgs()[0];
Map<String,Object> map = new HashMap<String,Object>();
Enumeration paramNames = req.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String[] paramValues = req.getParameterValues(paramName);
if (paramValues.length >0) {
String paramValue = paramValues[0];
if (paramValue.length() != 0) {
map.put(paramName, paramValue);
}
}
}
params = JSON.parseObject(JSON.toJSONString(map));
}
return params;
}

这个方法会返回一个json对象


支付宝打赏 微信打赏

您的支持是我最大的动力。

吐槽区