我在 spring-boot REST API 中添加了如下方面的方面来记录对包“com.leanring.sprint”中所有方法的调用,如下所示:
@Aspect
@Component
public class LogAdvice {
Logger logger = LoggerFactory.getLogger(LogAdvice.class);
@Pointcut(value = "execution(* com.learning.spring.*.*.*(..))")
public void pointCut() {
}
@Around("pointCut()")
public Object appLogger(ProceedingJoinPoint jp) throws Throwable {
ObjectMapper mapper = new ObjectMapper();
String methodName = jp.getSignature().getName();
String className = jp.getTarget().getClass().toString();
Object[] args = jp.getArgs();
logger.info("Start call: " + className + ":" + methodName + "()" + " with arguments: " + mapper.writeValueAsString(args));
Object object = jp.proceed();
logger.info("End call: " + className + ":" + methodName + "()" + " returned: " + mapper.writeValueAsString(object));
return object;
}
}
这工作正常,但我也希望它能够记录调用方法时可能发生的任何异常。
我该怎么做?
答案 0 :(得分:1)
我想您可以使用相同的切入点添加另一个 @AfterThrowing
建议或将 jp.proceed();
包装在 try-catch 块中。