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.
A log handler could then make use of this information as follows:
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");
}
}
Note that the HPEL handlers call
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) {
Map
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