springboot高级功能(四)业务实战,自定义注解收集操作日志

@AfterReturning(pointcut = “logPointCut()”, returning = “jsonResult”)

public void doAfter(JoinPoint joinPoint, Result jsonResult) {

handleLog(joinPoint, jsonResult);

}

/**

  • 拦截异常操作,有异常时执行

  • @param joinPoint

  • @param e

*/

@AfterThrowing(value = “logPointCut()”, throwing = “e”)

public void doAfter(JoinPoint joinPoint, Exception e) {

Log controllerLog = getAnnotationLog(joinPoint);

// 没有注解

if (controllerLog == null) {

return;

}

// 处理入参

String args = this.argsArrayToString(joinPoint.getArgs());

// 获取请求上下文信息

ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

HttpServletRequest request = attributes.getRequest();

HttpServletResponse response = attributes.getResponse();

// 获取时间

SimpleDateFormat sd = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

// 获取用户信息

String userName = (String.valueOf(SecurityContextHolder.getContext().getAuthentication().getPrincipal()));

// 组合入参信息

logger.error(“|” + userName + “|” + controllerLog.operationName() + “|” + sd.format(new Date()) + “|”

  • IpUtil.getIpAddr() + “|” + “XXX系统” + “|” + “操作日志” + “|” + “null” + “|” + “null”);

logger.error(“|” + userName + “|” + controllerLog.operationName() + “|” + sd.format(new Date()) + “|”

  • IpUtil.getIpAddr() + “|” + “XXX系统” + “|” + “接口日志” + “|” + request.getRequestURI() + “|” + args);

logger.debug(“错误信息为:” + e);

}

/**

  • 判断是否有注解

  • @param joinPoint

  • @throws Exception

*/

private Log getAnnotationLog(JoinPoint joinPoint) {

Signature signature = joinPoint.getSignature();

MethodSignature methodSignature = (MethodSignature)signature;

Method method = methodSignature.getMethod();

if (method != null) {

return method.getAnnotation(Log.class);

}

return null;

}

/**

  • 功能描述:执行日志操作

  • @param: joinPoint ,e ,response

  • @return:

*/

private void handleLog(final JoinPoint joinPoint, Result jsonResult) {

Log controllerLog = getAnnotationLog(joinPoint);

// 没有注解

if (controllerLog == null) {

return;

}

// 处理入参

String args = this.argsArrayToString(joinPoint.getArgs());

// 获取请求上下文信息

ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();

HttpServletRequest request = attributes.getRequest();

HttpServletResponse response = attributes.getResponse();

// 获取时间

SimpleDateFormat sd = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

// 获取用户信息

String userName = (String.valueOf(SecurityContextHolder.getContext().getAuthentication().getPrincipal()));

// 组合入参信息

logger.info(“|” + userName + “|” + controllerLog.operationName() + “|” + sd.format(new Date()) + “|”

  • IpUtil.getIpAddr() + “|” + “XXX系统” + “|” + “操作日志” + “|” + “null” + “|” + “null”);

logger.info(“|” + userName + “|” + controllerLog.operationName() + “|” + sd.format(new Date()) + “|”

  • IpUtil.getIpAddr() + “|” + “XXX系统” + “|” + “接口日志” + “|” + request.getRequestURI() + “|” + args);

logger.info(“输出参数:” + JSONArray.toJSONString(jsonResult.getData()));

}

/**

  • 组装入参

  • @param paramsArray

  • @return

*/

private String argsArrayToString(Object[] paramsArray) {

String params = “”;

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

image

阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

[外链图片转存中…(img-Z6Divif7-1714466602732)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 27
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值