这一次,我们干脆点,直接进入正题。
第一步
使用这个模块,你必要加入的包依赖:
第二步
你需要告诉我,你的切入点(继承 LBaseWebLogAspect
,并实现 pointCut()
方法,配置你的切入点)
@Aspect@Componentclass 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@RestControllerpublic 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@Componentclass 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;}
第四步
我们放大点,看得仔细
日志主要记录以下信息:
-
请求客户端IP
-
请求URL
-
请求的方式(GET/POST/...)
-
请求的类及相应的方法
-
请求的参数(json格式字符串)
-
返回的数据对象
-
此次请求花费的时间(单位:ns;ns 纳秒 1s=1000ms 1ms=1000us 1us=1000ns)
资料
[1]
[2]
[3]