@Documented @Retention(value=RUNTIME) @Target(value={METHOD,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://aspects.jcabi.com/,
Java Method Logging with AOP and Annotations, by Yegor BugayenkoModifier 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 |
logThis
Add toString() result to log line.
|
String |
name
The name of the logger to be used.
|
int |
precision
The precision (number of fractional digits) to be used when displaying
the measured execution time.
|
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
public abstract boolean logThis
public abstract int precision
public abstract String name
Copyright © 2012–2014 jcabi.com. All rights reserved.