Source:
private Object wrap(final ProceedingJoinPoint point, final Method method, final Loggable annotation) throws Throwable { if (Thread.interrupted()) { throw new IllegalStateException( String.format( "thread '%s' in group '%s' interrupted", Thread.currentThread().getName(), Thread.currentThread().getThreadGroup().getName() ) ); } final long start = System.nanoTime(); final MethodLogger.Marker marker = new MethodLogger.Marker(point, annotation); this.running.add(marker); int level = annotation.value(); final int exceptionLevel = this.decideExceptionLevel(annotation); try { final Object logger = this.logger(method, annotation.name()); if (annotation.prepend()) { LogHelper.log( level, logger, new StringBuilder( Mnemos.toText( point, annotation.trim(), annotation.skipArgs(), annotation.logThis() ) ).append(": entered").toString() ); } final Object result = point.proceed(); final long nano = System.nanoTime() - start; if (LogHelper.enabled(level, logger) || this.over(annotation, nano)) { if (this.over(annotation, nano)) { level = Loggable.WARN; } LogHelper.log( level, logger, this.message(point, method, annotation, result, nano) ); } return result; } catch (final Throwable ex) { if (!MethodLogger.contains(annotation.ignore(), ex) && !ex.getClass().isAnnotationPresent(Loggable.Quiet.class)) { final StackTraceElement[] traces = ex.getStackTrace(); final String origin; if (traces.length > 0) { final StackTraceElement trace = traces[0]; origin = MethodLogger.oneText(trace); } else { origin = "somewhere"; } LogHelper.log( exceptionLevel, method.getDeclaringClass(), Logger.format( "%s: thrown %s out of %s in %[nano]s", Mnemos.toText( point, annotation.trim(), annotation.skipArgs(), annotation.logThis() ), Mnemos.toText(ex), origin, System.nanoTime() - start ) ); } throw ex; } finally { this.running.remove(marker); } }

Target:
private Object wrap(final ProceedingJoinPoint point, final Method method, final Loggable annotation) throws Throwable { if (Thread.interrupted()) { throw new IllegalStateException( String.format( "thread '%s' in group '%s' interrupted", Thread.currentThread().getName(), Thread.currentThread().getThreadGroup().getName() ) ); } final long start = System.nanoTime(); final MethodLogger.Marker marker = new MethodLogger.Marker(point, annotation); this.running.add(marker); int level = annotation.value(); try { final Object logger = this.logger(method, annotation.name()); if (annotation.prepend()) { LogHelper.log( level, logger, new StringBuilder( Mnemos.toText( point, annotation.trim(), annotation.skipArgs(), annotation.logThis() ) ).append(": entered").toString() ); } final Object result = point.proceed(); final long nano = System.nanoTime() - start; if (LogHelper.enabled(level, logger) || this.over(annotation, nano)) { if (this.over(annotation, nano)) { level = Loggable.WARN; } LogHelper.log( level, logger, this.message(point, method, annotation, result, nano) ); } return result; } catch (final Throwable ex) { if (!MethodLogger.contains(annotation.ignore(), ex) && !ex.getClass().isAnnotationPresent(Loggable.Quiet.class)) { final StackTraceElement[] traces = ex.getStackTrace(); final String origin; if (traces.length > 0) { final StackTraceElement trace = traces[0]; origin = MethodLogger.oneText(trace); } else { origin = "somewhere"; } LogHelper.log( this.decideExceptionLevel(annotation), method.getDeclaringClass(), Logger.format( "%s: thrown %s out of %s in %[nano]s", Mnemos.toText( point, annotation.trim(), annotation.skipArgs(), annotation.logThis() ), Mnemos.toText(ex), origin, System.nanoTime() - start ) ); } throw ex; } finally { this.running.remove(marker); } }