Class TracingLogger
- java.lang.Object
-
- org.glassfish.jersey.message.internal.TracingLogger
-
- Direct Known Subclasses:
TracingLogger.TracingLoggerImpl
public abstract class TracingLogger extends java.lang.ObjectLow level Tracing support API. Use one instance per request.- Since:
- 2.3
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceTracingLogger.EventType of event.static classTracingLogger.LevelLevel of tracing message.private static classTracingLogger.TracingLoggerImplReal implementation of tracing logger.
-
Field Summary
Fields Modifier and Type Field Description static TracingLogger.LevelDEFAULT_LEVELDefault event level.private static java.lang.StringDEFAULT_LOGGER_NAME_SUFFIXDefault JDK logger name suffix.private static TracingLoggerEMPTYEmpty (no-op) tracing logger.static java.lang.StringHEADER_ACCEPTRequest header name to switch on request tracing.static java.lang.StringHEADER_LOGGERRequest header name to set JDK logger name suffix to identify a request logs.private static java.lang.StringHEADER_RESPONSE_FORMATResponse header name format.static java.lang.StringHEADER_THRESHOLDRequest header name to change application default tracing level.private static java.lang.StringHEADER_TRACING_PREFIXHTTP header prefix.static java.lang.StringPROPERTY_NAMETracingLoggerinstance is placed in request context properties under this name.private static java.lang.StringTRACING_LOGGER_NAME_PREFIXJDK logger name prefix.
-
Constructor Summary
Constructors Constructor Description TracingLogger()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static TracingLoggercreate(TracingLogger.Level threshold, java.lang.String loggerNameSuffix)Create new Tracing logger.static TracingLoggerempty()Get an empty (no-op) tracing logger instance.abstract voidflush(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> headers)Stores collected tracing messages to response HTTP header.static TracingLoggergetInstance(PropertiesDelegate propertiesDelegate)Returns instance ofTracingLoggerassociated with current request processing (propertiesDelegate).abstract booleanisLogEnabled(TracingLogger.Event event)Test if a tracing support is enabled (according topropertiesDelegatesetting) and ifeventcan be logged (according toevent.leveland threshold level set).abstract voidlog(TracingLogger.Event event, java.lang.Object... args)Try to log event according to event level and request context threshold level setting.abstract voidlogDuration(TracingLogger.Event event, long fromTimestamp, java.lang.Object... args)Try to log event according to event level and request context threshold level setting.abstract longtimestamp(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 java.lang.String PROPERTY_NAME
TracingLoggerinstance is placed in request context properties under this name.
-
HEADER_TRACING_PREFIX
private static final java.lang.String HEADER_TRACING_PREFIX
HTTP header prefix.- See Also:
- Constant Field Values
-
HEADER_THRESHOLD
public static final java.lang.String HEADER_THRESHOLD
Request header name to change application default tracing level.- See Also:
- Constant Field Values
-
HEADER_ACCEPT
public static final java.lang.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 java.lang.String HEADER_LOGGER
Request header name to set JDK logger name suffix to identify a request logs.- See Also:
- Constant Field Values
-
HEADER_RESPONSE_FORMAT
private static final java.lang.String HEADER_RESPONSE_FORMAT
Response header name format.- See Also:
- Constant Field Values
-
DEFAULT_LEVEL
public static final TracingLogger.Level DEFAULT_LEVEL
Default event level.
-
TRACING_LOGGER_NAME_PREFIX
private static final java.lang.String TRACING_LOGGER_NAME_PREFIX
JDK logger name prefix.- See Also:
- Constant Field Values
-
DEFAULT_LOGGER_NAME_SUFFIX
private static final java.lang.String DEFAULT_LOGGER_NAME_SUFFIX
Default JDK logger name suffix. This can be overwrite by headerHEADER_LOGGER.- See Also:
- Constant Field Values
-
EMPTY
private static final TracingLogger EMPTY
Empty (no-op) tracing logger.
-
-
Method Detail
-
getInstance
public static TracingLogger getInstance(PropertiesDelegate propertiesDelegate)
Returns instance ofTracingLoggerassociated with current request processing (propertiesDelegate).- Parameters:
propertiesDelegate- request associated runtime properties. Can benullif not running on server side.- Returns:
- returns instance of
TracingLoggerfrompropertiesDelegate. Does not returnnull.
-
create
public static TracingLogger create(TracingLogger.Level threshold, java.lang.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 topropertiesDelegatesetting) and ifeventcan be logged (according toevent.leveland threshold level set).- Parameters:
event- event type to be tested- Returns:
trueifeventcan be logged
-
log
public abstract void log(TracingLogger.Event event, java.lang.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, java.lang.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. IffromTimestampis 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.-1in 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
-1if tracing is not enabled
-
flush
public abstract void flush(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> headers)
Stores collected tracing messages to response HTTP header.- Parameters:
headers- message headers.
-
-