1.使用spring 的 aop 技术切到自定义注解上,所以先创建一个自定义注解类

  1. import java.lang.annotation.*;
  2.  
  3. @Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上
  4. @Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行
  5. @Documented //生成文档
  6. public @interface MyLog {
  7. String value() default "";//功能模块名称
  8. int type() default 1;//用户具体操作类型代表,0:登录;1:查询;2:新增;3:修改;import com.alibaba.fastjson.JSONObject;
  1. import org.aspectj.lang.JoinPoint;
  2. import org.aspectj.lang.annotation.AfterReturning;
  3. import org.aspectj.lang.annotation.Aspect;
  4. import org.aspectj.lang.annotation.Pointcut;
  5. import org.aspectj.lang.reflect.MethodSignature;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.context.request.RequestAttributes;
  8. import org.springframework.web.context.request.RequestContextHolder;
  9. import org.springframework.web.context.request.ServletRequestAttributes;
  10. import javax.annotation.Resource;
  11. import javax.servlet.http.HttpServletRequest;
  12. import java.lang.reflect.Method;
  13. import java.util.Map;
  14. /**
  15. * 系统日志:切面处理类
  16. */
  17. @Aspect
  18. @Component
  19. public class SysLogAspect {
  20. @Resource
  21. private IViapLogInfoService viapLogInfoService;
  22. //定义切点 @Pointcut
  23. //在注解的位置切入代码
  24. @Pointcut("@annotation( com.harzone.lhps.viap.interceptor.MyLog)")
  25. public void logPoinCut() {
  26. }
  27. //切面 配置通知
  28. @AfterReturning("logPoinCut()")
  29. public void saveSysLog(JoinPoint joinPoint) {
  30. try {
  31. ViapLogInfo viapLogInfo = new ViapLogInfo();
            //获取request
  32. RequestAttributes ra = RequestContextHolder.getRequestAttributes();
  33. ServletRequestAttributes sra = (ServletRequestAttributes) ra;
  34. HttpServletRequest request = sra.getRequest();
            //获取客户端ip
  35. viapLogInfo.setIp(WebUtil.getHost(request));//保存日志
  36. //从切面织入点处通过反射机制获取织入点处的方法
  37. MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  38. //获取切入点所在的方法
  39. Method method = signature.getMethod();
  40. //获取请求的类名
  41. // String className = joinPoint.getTarget().getClass().getName();
  42. //获取请求的方法名
  43. // String methodName = method.getName();
  44. //请求的参数
  45. // Object[] args = joinPoint.getArgs();
  46. //获取request中的json字符串
  47. JSONObject obj=GetRequestJsonUtils.getRequestJsonObject(request);
  48. // String params = JSON.toJSONString(obj);
  49. //获取操作
  50. MyLog myLog = method.getAnnotation(MyLog.class);
  51. if (myLog != null) {
  52. if(obj != null) {
  53. JSONObject jo = new JSONObject();
  54. if (myLog.status() == 1) {
  55. // viapLogInfo.setOperateCondition(className + "." + params);
  56. for (Map.Entry<String, Object> entry : obj.entrySet()) {
  57. if(entry.getValue() != null && !"".equals(entry.getValue())) {
  58. jo.put(entry.getKey(),entry.getValue());
  59. }
  60. }
  61. }
  62. viapLogInfo.setOperateCondition(jo.toString());
  63. }
  64. viapLogInfo.setValue(myLog.value());
  65. }
  66. viapLogInfoService.add(viapLogInfo);
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. }
  70. }

3.接下来就可以在需要监控的方法上添加 aop的自定义注解格式为 @+自定义注解的类名 @MyLog

  1.   @PostMapping("login.json")
  2. @MyLog(value= "登录"")
  3. public JSONObject login(@RequestBody User userser) {
  4.  
  5. return null;
  6. }

  

通过aop添加日志管理的更多相关文章

  1. [置顶] 使用sping AOP 操作日志管理

    记录后台操作人员的登陆.退出.进入了哪个界面.增加.删除.修改等操作 在数据库中建立一张SYSLOG表,使用Sping 的AOP实现日志管理,在Sping.xml中配置 <!-- Spring ...

  2. Spring Boot 入门(五):集成 AOP 进行日志管理

    本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...

  3. org.slf4j:slf4j-api:添加日志管理

    org.slf4j:slf4j-api:添加日志管理 转 https://blog.csdn.net/wolfking0608/article/details/77855624   一个好的程序, 完 ...

  4. 【Java分享客栈】超简洁SpringBoot使用AOP统一日志管理-纯干货干到便秘

    前言 请问今天您便秘了吗?程序员坐久了真的会便秘哦,如果偶然点进了这篇小干货,就麻烦您喝杯水然后去趟厕所一边用左手托起对准嘘嘘,一边用右手滑动手机看完本篇吧. 实现 本篇AOP统一日志管理写法来源于国 ...

  5. 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】

    一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...

  6. 【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】

    一.需求分析 日志数据在很多行业中都是非常敏感的数据,它们不能删除只能保存和查看,这样日志表就会越来越大,我们不可能永远让它无限制的增长下去,必须采取一种手段将数据分散开来.假设现在整个数据库需要保存 ...

  7. springBoot添加日志管理

    一. 近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了 ...

  8. 使用Spring AOP 实现日志管理(简单教程)

    有时候,我们在做项目时会遇到这样的需求: 给XXX.java中的所有方法加上指定格式的日志输出. 针对这种指定类.或者指定方法进行共性操作的功能,我们完全可以使用Spring AOP来实现. 本文使用 ...

  9. 自定义注解-aop实现日志记录

    关于注解,平时接触的可不少,像是 @Controller.@Service.@Autowried 等等,不知道你是否有过这种疑惑,使用 @Service 注解的类成为我们的业务类,使用 @Contro ...

随机推荐

  1. 测试驱动开发(TDD)及测试框架Mocha.js入门学习

    组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...

  2. ODBC驱动程序丢失解决方法

    今天运行SqlDbx连接数据库的时候报错,提示没有找到相应的ODBC driver,打开ODBC管理面板一看,发现里面的驱动程序都不见了.这时想起今天卸载了一个成本核算软件后成这样的,网上搜索一下只需 ...

  3. CMAKE 安装

    下载 解压  https://cmake.org/download/ https://cmake.org/files/v3.7/cmake-3.7.1.tar.gz yum install gcc - ...

  4. 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里

    我们在用ABAP代码消费外网的url时会遇到一些异常,比如ICM_HTTP_SSL_PEER_CERT_UNTRUSTED,这是因为请求的url所在的网站的SSL Server certificate ...

  5. SAP Netweaver和Hybris的数据库层

    ABAP Netweaver 在SAP基于Netweaver的ABAP应用里,应用开发人员用Open SQL访问数据库, 这些Open SQL会被Database interface(数据库接口)转换 ...

  6. **611. Valid Triangle Number three pointer O(n^3) -> square(binary search larget number smaller than target)

    Given an array consists of non-negative integers, your task is to count the number of triplets chose ...

  7. 【转载】#324 - A Generic Class Can Have More than One Type Parameter

    A generic class includes one or more type parameters that will be substituted with actual types when ...

  8. 将xml转换成Json,数组,对象格式转换方法

    xml字符串:$simplexml 转换成Json格式:json_encode($simplexml) 转换成数组格式:json_decode(json_encode($simplexml),TRUE ...

  9. removing vmware debugger from visual studio

    removing vmware debugger from visual studio by Ross on 十月 14, 2010 at 5:30 下午 under Visual Studio |  ...

  10. machine learning学习笔记

    看到Max Welling教授主页上有不少学习notes,收藏一下吧,其最近出版了一本书呢还,还没看过. http://www.ics.uci.edu/~welling/classnotes/clas ...