@Override public Object intercept(InvocationContext context) { if (LOG.isTraceEnabled()) { if (context instanceof MethodExecutionHandle) { MethodExecutionHandle handle = (MethodExecutionHandle) context; Collection<MutableArgumentValue<?>> values = context.getParameters().values(); LOG.trace("Invoking method {}#{}(..) with arguments {}", context.getTarget().getClass().getName(), handle.getMethodName(), values.stream().map(ArgumentValue::getValue).collect(Collectors.toList())); } } Object result = context.proceed(); if (LOG.isTraceEnabled()) { if (context instanceof MethodExecutionHandle) { MethodExecutionHandle handle = (MethodExecutionHandle) context; LOG.trace("Method {}#{}(..) returned result {}", context.getTarget().getClass().getName(), handle.getMethodName(), result); } } return result; } }