Class TracingLogger
- java.lang.Object
-
- org.glassfish.jersey.message.internal.TracingLogger
-
public abstract class TracingLogger extends Object
Low level Tracing support API. Use one instance per request.- Since:
- 2.3
- Author:
- Libor Kramolis
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
TracingLogger.Event
Type of event.static class
TracingLogger.Level
Level of tracing message.
-
Field Summary
Fields Modifier and Type Field Description static TracingLogger.Level
DEFAULT_LEVEL
Default event level.static String
HEADER_ACCEPT
Request header name to switch on request tracing.static String
HEADER_LOGGER
Request header name to set JDK logger name suffix to identify a request logs.static String
HEADER_THRESHOLD
Request header name to change application default tracing level.static String
PROPERTY_NAME
TracingLogger
instance is placed in request context properties under this name.
-
Constructor Summary
Constructors Constructor Description TracingLogger()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static TracingLogger
create(TracingLogger.Level threshold, String loggerNameSuffix)
Create new Tracing logger.static TracingLogger
empty()
Get an empty (no-op) tracing logger instance.abstract void
flush(jakarta.ws.rs.core.MultivaluedMap<String,Object> headers)
Stores collected tracing messages to response HTTP header.static TracingLogger
getInstance(PropertiesDelegate propertiesDelegate)
Returns instance ofTracingLogger
associated with current request processing (propertiesDelegate
).abstract boolean
isLogEnabled(TracingLogger.Event event)
Test if a tracing support is enabled (according topropertiesDelegate
setting) and ifevent
can be logged (according toevent.level
and threshold level set).abstract void
log(TracingLogger.Event event, Object... args)
Try to log event according to event level and request context threshold level setting.abstract void
logDuration(TracingLogger.Event event, long fromTimestamp, Object... args)
Try to log event according to event level and request context threshold level setting.abstract long
timestamp(TracingLogger.Event event)
If logging support is switched on for current request and event setting the method returns current timestamp in nanos.
-
-
-
Field Detail
-
PROPERTY_NAME
public static final String PROPERTY_NAME
TracingLogger
instance is placed in request context properties under this name.
-
HEADER_THRESHOLD
public static final String HEADER_THRESHOLD
Request header name to change application default tracing level.- See Also:
- Constant Field Values
-
HEADER_ACCEPT
public static final String HEADER_ACCEPT
Request header name to switch on request tracing. Make sense in case of tracing support enabled by ON_DEMAND value.- See Also:
- Constant Field Values
-
HEADER_LOGGER
public static final String HEADER_LOGGER
Request header name to set JDK logger name suffix to identify a request logs.- See Also:
- Constant Field Values
-
DEFAULT_LEVEL
public static final TracingLogger.Level DEFAULT_LEVEL
Default event level.
-
-
Method Detail
-
getInstance
public static TracingLogger getInstance(PropertiesDelegate propertiesDelegate)
Returns instance ofTracingLogger
associated with current request processing (propertiesDelegate
).- Parameters:
propertiesDelegate
- request associated runtime properties. Can benull
if not running on server side.- Returns:
- returns instance of
TracingLogger
frompropertiesDelegate
. Does not returnnull
.
-
create
public static TracingLogger create(TracingLogger.Level threshold, String loggerNameSuffix)
Create new Tracing logger.- Parameters:
threshold
- tracing level threshold.loggerNameSuffix
- tracing logger name suffix.- Returns:
- new tracing logger.
-
empty
public static TracingLogger empty()
Get an empty (no-op) tracing logger instance.- Returns:
- empty tracing logger instance.
-
isLogEnabled
public abstract boolean isLogEnabled(TracingLogger.Event event)
Test if a tracing support is enabled (according topropertiesDelegate
setting) and ifevent
can be logged (according toevent.level
and threshold level set).- Parameters:
event
- event type to be tested- Returns:
true
ifevent
can be logged
-
log
public abstract void log(TracingLogger.Event event, Object... args)
Try to log event according to event level and request context threshold level setting.- Parameters:
event
- event type to be loggedargs
- message arguments (in relation to.Event#messageFormat()
-
logDuration
public abstract void logDuration(TracingLogger.Event event, long fromTimestamp, Object... args)
Try to log event according to event level and request context threshold level setting. If logging support is switched on for current request and event setting the method computes duration of event and log message. IffromTimestamp
is not set (i.e.-1
) then duration of event is0
.- Parameters:
event
- event type to be loggedfromTimestamp
- logged event is running from the timestamp in nanos.-1
in case event has no durationargs
- message arguments (in relation to.Event#messageFormat()
-
timestamp
public abstract long timestamp(TracingLogger.Event event)
If logging support is switched on for current request and event setting the method returns current timestamp in nanos.- Parameters:
event
- event type to be logged- Returns:
- Current timestamp in nanos or
-1
if tracing is not enabled
-
-