美文网首页
JavaLib | 使用AOP帮你记录日志

JavaLib | 使用AOP帮你记录日志

作者: 冯文议 | 来源:发表于2018-09-04 00:10 被阅读13次

    这一次,我们干脆点,直接进入正题。

    第一步

    使用这个模块,你必要加入的包依赖:

    AOP 记录日志模块需要的包依赖(红色边框)

    第二步

    你需要告诉我,你的切入点(继承 LBaseWebLogAspect,并实现 pointCut() 方法,配置你的切入点)

    @Aspect
    @Component
    class WebLogAspect extends LBaseWebLogAspect {
    
        @Pointcut("execution(* com.fengwenyi.javalibexampleaoplog..*.*(..))")
        @Override
        protected void pointCut() { }
    }
    

    第三步

    写一个接口进行测试,我们还是使用上一次的切口吧(完整代码)

    package com.fengwenyi.javalibexampleaoplog;
    
    import com.fengwenyi.javalib.aop.LBaseWebLogAspect;
    import com.fengwenyi.javalib.result.DefaultReturnCode;
    import com.fengwenyi.javalib.result.Result;
    import com.fengwenyi.javalib.result.ResultResponseUtil;
    import lombok.Data;
    import lombok.experimental.Accessors;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class JavalibExampleAoplogApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(JavalibExampleAoplogApplication.class, args);
        }
    
        /**
         * 获取所有用户数据
         * @return (json)
         */
        @GetMapping("/getUsers")
        public Result getUsers() {
    
            User user1 = new User().setName("冯文议").setAge(26).setGender("男");
            User user2 = new User().setName("张三").setAge(25).setGender("女");
            User user3 = new User().setName("李四").setAge(23).setGender("保密");
            User user4 = new User().setName("王五").setAge(20).setGender("未知");
    
            User [] users = {user1, user2, user3, user4};
    
            return ResultResponseUtil.ok().status(DefaultReturnCode.SUCCESS).data(users);
    
        }
    }
    
    @Aspect
    @Component
    class WebLogAspect extends LBaseWebLogAspect {
    
        @Pointcut("execution(* com.fengwenyi.javalibexampleaoplog..*.*(..))")
        @Override
        protected void pointCut() { }
    }
    
    @Data
    @Accessors(chain = true)
    class User {
    
        // 姓名
        private String name;
        // 年龄
        private Integer age;
        // 性别
        private String gender;
    
    }
    

    第四步

    AOP 记录访问日志

    我们放大点,看得仔细

    放大点

    日志主要记录以下信息:

    • 请求客户端IP

    • 请求URL

    • 请求的方式(GET/POST/...)

    • 请求的类及相应的方法

    • 请求的参数(json格式字符串)

    • 返回的数据对象

    • 此次请求花费的时间(单位:ns;ns 纳秒 1s=1000ms 1ms=1000us 1us=1000ns)

    资料

    [1] Spring Boot 项目如何记录日志? ☜

    [2] 本节测试代码 ☜

    [3] JavaLib ☜

    相关文章

      网友评论

          本文标题:JavaLib | 使用AOP帮你记录日志

          本文链接:https://www.haomeiwen.com/subject/pxswwftx.html