使用Spring AOP实现对外接口的日志自动打印

本文介绍了如何使用SpringAOP技术在接口方法前后自动打印参数和返回值日志,以及如何通过logback配置将API调用日志独立出来,提高日志管理的清晰度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引言

相信我们都有过这样的经历,在提供第三方对外接口时,为了防止推诿扯皮,我们会在自己接口被调用时日志打印一下第三方的调用参数,再在业务逻辑结束返回时再打印一下给第三方的返回参数,这样在后续遇到bug时,能用日志方便排(shuai)查(guo)。
如果老老实实的手动打印日志,我们的代码将会是这个样子

publish Response queryTask(RequestParam param) {
   
	// 打印第三方请求参数
	LOGGER.info("queryTask param:{}", JSON.toJSONString(param));
	
	// Response为执行查询业务后的结果
	Response rsp = null;
	
	// 打印返回给第三方的结果
	LOGGER.info("queryTask response:{}", JSON.toJSONString(rsp))
	return rsp;
}

每个接口都这样去写,又麻烦又怕自己忘记,如此机械化的简单行为,有没有什么办法能够让程序帮我们做这份工作?让我们的代码变得更加优雅呢?Spring的AOP是一个不错的思想。

二、使用AOP实现日志打印

  1. 定义一个api注解,它所标注的方法均能够打印入参和返回
@Target({
   ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiLog {
   

}
  1. 定义我们的切面和切点
@Component
@Aspect
public class ApiLogAspect {
   
	// 切入点
    @Pointcut("@annotation(com.yangyungang.open.aspect.log.anno.ApiLog)")
    private void apiLogPointCut() 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值