自定义注解结合aop实现系统日志

当然,记录系统日志方式可以由很多,这里介绍一种采用注解的方式,结合spring aop反向代理的方式,输出特定日志信息,此方式的作用场景还有很多,像针对方法级的权限控制等等  (aop真的是一个好东西)

 

首先

先定义一个自定义注解

/**
 * 系统日志注解
 * 
 * Create by yu
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLog {

	String value() default "";
}

然后

定义一个切面类

/**
 * 系统日志,切面处理类
 * 
 * Create by yu
 */
@Aspect
@Component
public class SysLogAspect {

	protected Logger logger = LoggerFactory.getLogger(getClass());


	@Pointcut("@annotation(com.sskj.utils.annotation.SysLog)")
	public void logPointCut() { 
		
	}
	
	@Before("logPointCut()")
	public void saveSysLog(JoinPoint joinPoint) {
		MethodSignature signature = (MethodSignature) joinPoint.getSignature();
		Method method = signature.getMethod();
		
		SysLog syslog = method.getAnnotation(SysLog.class);
		if(syslog != null){
			//注解上的描述
		}

		//请求的方法名
		String className = joinPoint.getTarget().getClass().getName();
		String methodName = signature.getName();

		//请求的参数
		Object[] args = joinPoint.getArgs();
		String params = JSON.toJSONString(args[0]);

		logger.info(String.format("类名:%s,方法名:%s,请求参数为:%s",className,methodName,params));

	}
	
}

可以看到 切点就是定义的注解@SysLog   通过反向代理的方式获得类名,注解注释,方法名,参数等信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值