protected void logException(Throwable e, ProceedingJoinPoint ctx) {
if (e instanceof NoUserSessionException) {
log.info("Exception in {}: {}", ctx.getSignature().toShortString(), e.toString());
} else if (e instanceof MethodParametersValidationException) {
log.info("MethodParametersValidationException in {}: {}, violations:\n{}", ctx.getSignature().toShortString(), e.toString(),
((MethodParametersValidationException) e).getConstraintViolations());
} else if (e instanceof MethodResultValidationException) {
log.error("MethodResultValidationException in {}: {}, violations:\n{}", ctx.getSignature().toShortString(), e.toString(),
((MethodResultValidationException) e).getConstraintViolations());
} else {
Logging annotation = e.getClass().getAnnotation(Logging.class);
if (annotation == null || annotation.value() == Logging.Type.FULL) {
log.error("Exception: ", e);
} else if (annotation.value() == Logging.Type.BRIEF) {
log.error("Exception in {}: {}", ctx.getSignature().toShortString(), e.toString());
}
}
}