@Documented @Retention(value=RUNTIME) @Target(value={METHOD,CONSTRUCTOR,TYPE}) public @interface Loggable
Logger.
For example, this load() method produces a log line
on every call:
@Loggable
String load(String resource) throws IOException {
return "something";
}
You can configure the level of logging:
@Loggable(Loggable.DEBUG)
void save(String resource) throws IOException {
// do something
}
Since version 0.7.6, you can specify a maximum execution time limit for
a method. If such a limit is reached a logging message will be issued with
a WARN priority. It is a very convenient mechanism for profiling
applications in production. Default value of a limit is 1 second.
@Loggable(limit = 2)
void save(String resource) throws IOException {
// do something, potentially slow
}
Since version 0.7.14 you can change the time unit for the "limit" parameter. Default unit of measurement is a second:
@Loggable(limit = 200, unit = TimeUnit.MILLISECONDS)
void save(String resource) throws IOException {
// do something, potentially slow
}
Since version 0.7.17 you can ignore certain exception types, and they won't be logged when thrown. It is very useful when exceptions are used to control flow (which is not a good practice, but is still used in some frameworks, for example in JAX-RS):
@Loggable(ignore = WebApplicationException.class)
String get() {
if (not_logged_in()) {
throw new WebApplicationException(forward_to_login_page());
}
}
Since version 0.8 you can mark some exceptions as "always to be ignored",
using Loggable.Quiet annotation.
Logger,
http://www.jcabi.com/jcabi-aspects/| Modifier and Type | Optional Element and Description |
|---|---|
Class<? extends Throwable>[] |
ignore
List of exception types, which should not be logged if thrown.
|
int |
limit
Maximum amount allowed for this method (a warning will be
issued if it takes longer).
|
boolean |
prepend
Method entry moment should be reported as well (by default only
an exit moment is reported).
|
boolean |
skipArgs
Skip logging of arguments, replacing them all with dots?
|
boolean |
skipResult
Skip logging of result, replacing it with dots?
|
boolean |
trim
Shall we trim long texts in order to make log lines more readable?
|
TimeUnit |
unit
Time unit for the limit.
|
int |
value
Level of logging.
|
public abstract int value
public abstract int limit
public abstract TimeUnit unit
public abstract boolean trim
public abstract boolean prepend
public abstract Class<? extends Throwable>[] ignore
You can also mark some exception types as "always to be ignored",
using Loggable.Quiet annotation.
public abstract boolean skipResult
public abstract boolean skipArgs
Copyright © 2012–2014 jcabi.com. All rights reserved.