日志切面获取接口响应的结果值
时间: 2023-09-08 19:16:46 浏览: 98
您可以通过在接口调用前后添加切面(Aspect),在接口调用前记录请求的参数和时间戳,在接口调用后记录响应结果和时间戳。具体地,您可以在切面中使用 `@Before` 注解和 `@AfterReturning` 注解来分别捕捉接口调用前和调用后的信息。在 `@AfterReturning` 注解中,您可以通过返回值参数 `Object returnValue` 来获取接口的返回结果,然后对其进行处理。这里提供一个简单的示例:
```java
@Component
@Aspect
public class InterfaceLogAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(InterfaceLogAspect.class);
@Before("execution(* com.example.demo.service.impl.*.*(..))")
public void before(JoinPoint joinPoint) {
LOGGER.info("Method {}() is invoked with args {} at {}.", joinPoint.getSignature().getName(), Arrays.toString(joinPoint.getArgs()), LocalDateTime.now());
}
@AfterReturning(pointcut = "execution(* com.example.demo.service.impl.*.*(..))", returning = "returnValue")
public void afterReturning(JoinPoint joinPoint, Object returnValue) {
LOGGER.info("Method {}() is finished at {} with return value {}.", joinPoint.getSignature().getName(), LocalDateTime.now(), returnValue);
}
}
```
在上述示例中,我们定义了一个名为 `InterfaceLogAspect` 的切面,并使用 `@Before` 和 `@AfterReturning` 注解分别捕捉接口调用前和调用后的信息。其中,我们使用 `JoinPoint` 对象来获取调用方法的名称和参数,并使用 `LocalDateTime` 来记录时间戳。在 `@AfterReturning` 注解中,我们使用 `Object returnValue` 参数来获取接口返回的结果,并通过 `LOGGER` 对象来打印日志信息。您可以根据自己的需求修改上述示例中的代码。
阅读全文