public class LogRecordContext
extends java.lang.Object
Code that needs to add key-value pairs to log and trace records can register a key, and a corresponding LogRecordContext.Extension callback via the registerExtension method.
Log handlers can then use these key-value pairs in log and trace output by calling the getExtensions method, which in turn calls back to any registered LogRecordContext.Extension callbacks to populate the key-value pairs into a Map.
As an example, the following code could be used to add a LogRecordContext.Extension that provides the ThreadId of the current thread.
import com.ibm.websphere.logging.hpel.LogRecordContext; public class ThreadIdExtension { // a strong reference to the LogRecordContext.Extension to make // sure it is not garbage collected private final static LogRecordContext.Extension extension = new LogRecordContext.Extension() { public String getValue() { return Long.toString(Thread.currentThread().getId()); } }; public static void init() { LogRecordContext.registerExtension("ThreadId", extension); } public static void destroy() { LogRecordContext.unregisterExtension("ThreadId"); } }A log handler could then make use of this information as follows:
import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.logging.Handler; import java.util.logging.LogRecord; import com.ibm.websphere.logging.hpel.LogRecordContext; public class MyHandler extends Handler { private PrintWriter printWriter; MyHandler(PrintWriter printWriter) { this.printWriter = printWriter; } public void close() { printWriter.close(); } public void flush() { printWriter.flush(); } public void publish(LogRecord record) { MapNote that the HPEL handlers callcontext = new HashMap (); // get the extension keys/values LogRecordContext.getExtensions(context); String threadId = context.get("ThreadId"); printWriter.println("[" + threadId + "] " + record.getMessage()); } }
LogRecordContext.getExtensions
and store the resultant key-value pairs in the log and trace data
repositories. This information can then be accessed via the
com.ibm.websphere.logging.hpel.reader.RepositoryLogRecord getExtensions
method. Extension information can also be used for filtering log and trace
records via the LogViewer command line tool's -includeExtensions option.Modifier and Type | Class and Description |
---|---|
static interface |
LogRecordContext.Extension
Call back interface to retrieve current extension value.
|
Constructor and Description |
---|
LogRecordContext() |
Modifier and Type | Method and Description |
---|---|
static void |
getExtensions(java.util.Map<java.lang.String,java.lang.String> map)
Retrieves values for all registered context extensions.
|
static void |
registerExtension(java.lang.String key,
LogRecordContext.Extension extension)
Registers new context extension.
|
static boolean |
unregisterExtension(java.lang.String key)
Removes context extension registration.
|
public static void registerExtension(java.lang.String key, LogRecordContext.Extension extension)
key
- String key to associate with the registered extensionextension
- LogRecordContext.Extension
implementation returning extension runtime valuesjava.lang.IllegalArgumentException
- if parameter key
or extension
are null
; or if key
already has extension associated with it.public static boolean unregisterExtension(java.lang.String key)
key
- String key associated with the registered extension.true
if key had extension associated with it.java.lang.IllegalArgumentException
- if parameter key
is null
.public static void getExtensions(java.util.Map<java.lang.String,java.lang.String> map) throws java.lang.IllegalArgumentException
map
- Map
instance to populate with key-value pairs of
the context extensions.java.lang.IllegalArgumentException
- if parameter map
is null