你可以使用AspectJ的&任何日志框架来处理这一要求, 所以你需要做到以下几点:
1-创建注释内搭论据,你可能希望,甚至采取的参数不确定数字的字符串,并处理他们像'arg1=q,arg2=w,arg3=e'
2 - 您的新注释创建点切一个方面是这样
@Pointcut(value = "@annotation(loggableActivity)", argNames = "loggableActivity")
注意,这里使用argNames将注释本身发送到处理程序方法,这样你就可以从它那里得到的参数一样'arg1=q,arg2=w,arg3=e'
,并且继续在方法调用之前处理它们
3-,登录你想了解它什么都,你可以从你的论点得到几乎所有需要的信息,
注释代码如下所示:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LoggableActivity {
String value();
String args() default "";
}
切入点代码如下所示:
@Aspect
public class ActivityLogger {
private static final Logger logger = LoggerFactory.getLogger("activity");
@Pointcut(value = "@annotation(loggableActivity)", argNames = "loggableActivity")
public void loggableUserActivity(LoggableActivity loggableActivity) {
}
@Around("loggableUserActivity(loggableActivity)")
public Object doLoggingUserActivity(ProceedingJoinPoint pjp,
LoggableActivity loggableActivity) throws Throwable {}
然后里面doLoggingUserActivity
你可以使用的方法,如
pjp.proceed(); proceed method call
pjp.getArgs(); gets method arguments
loggableActivity.args(); gets annotation argument as String
然后使用记录器记录他们