文档章节

JavaLib | 使用AOP帮你记录日志

冯文议
 冯文议
发布于 2018/09/04 00:07
字数 438
阅读 39
收藏 14

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

第一步

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

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 ☜

© 著作权归作者所有

冯文议
粉丝 11
博文 47
码字总数 47895
作品 0
成都
高级程序员
私信 提问
JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

基于Spring Boot Quartz开发的JavaLib-quartz,目的是帮你快速构建定时任务系统,你可以专心编写你的业务逻辑,而不必关注定时任务具体是如何实现的,他的性能如何,有没有异常以及异常处理,...

冯文议
2018/07/30
69
0
相同类中方法间调用时日志Aop失效处理

本篇分享的内容是在相同类中方法间调用时Aop失效处理方案,该问题我看有很多文章描述了,不过大多是从事务角度分享的,本篇打算从日志aop方面分享(当然都是aop,失效和处理方案都是一样),以...

阿里云官方博客
09/12
44
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
2018/07/22
62
0
spring AOP实现业务日志管理

我们知道,在一个系统中,业务操作日志对我们很重要。那么以往我们更多的时候是写个方法,然后哪个模块需要加入日志,就引入这个接口。但是这种其实冗余了很多代码。今天我简单给大家介绍下采...

吕兵阳
2016/05/21
1K
0
Spring Boot 使用AOP统一处理Web请求日志

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义...

小致dad
2018/08/08
281
0

没有更多内容

加载失败,请刷新页面

加载更多

JS--function

一、声明提前(hoist) 在js程序开始执行前,引擎会查找所有var声明的变量和function声明的函数,集中到当前作用域顶部集中创建,赋值留在原地 二、三种创建函数的方式 1、声明方式创建函数-...

wytao1995
今天
4
0
微服务之间调用控制器注解类型的差异

今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大...

不再熬夜
今天
6
0
用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
今天
6
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
今天
5
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部