org.glassfish.jersey.message.internal
Class TracingLogger

java.lang.Object
  extended by 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 (libor.kramolis at oracle.com)

Nested Class Summary
static interface TracingLogger.Event
          Type of event.
static class TracingLogger.Level
          Level of tracing message.
 
Field Summary
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
TracingLogger()
           
 
Method Summary
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(MultivaluedMap<String,Object> headers)
          Stores collected tracing messages to response HTTP header.
static TracingLogger getInstance(PropertiesDelegate propertiesDelegate)
          Returns instance of TracingLogger associated with current request processing (propertiesDelegate).
abstract  boolean isLogEnabled(TracingLogger.Event event)
          Test if a tracing support is enabled (according to propertiesDelegate setting) and if event can be logged (according to event.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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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.

Constructor Detail

TracingLogger

public TracingLogger()
Method Detail

getInstance

public static TracingLogger getInstance(PropertiesDelegate propertiesDelegate)
Returns instance of TracingLogger associated with current request processing (propertiesDelegate).

Parameters:
propertiesDelegate - request associated runtime properties. Can be null if not running on server side.
Returns:
returns instance of TracingLogger from propertiesDelegate. Does not return null.

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 to propertiesDelegate setting) and if event can be logged (according to event.level and threshold level set).

Parameters:
event - event type to be tested
Returns:
true if event 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 logged
args - message arguments (in relation to TracingLogger.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. If fromTimestamp is not set (i.e. -1) then duration of event is 0.

Parameters:
event - event type to be logged
fromTimestamp - logged event is running from the timestamp in nanos. -1 in case event has no duration
args - message arguments (in relation to TracingLogger.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

flush

public abstract void flush(MultivaluedMap<String,Object> headers)
Stores collected tracing messages to response HTTP header.

Parameters:
headers - message headers.


Copyright © 2007-2014, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.