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) {
Map context = new HashMap();
// get the extension keys/values
LogRecordContext.getExtensions(context);
String threadId = context.get("ThreadId");
printWriter.println("[" + threadId + "] " + record.getMessage());
}
}
Note that the HPEL handlers call 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.
|
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
PTHREADID |
| Constructor and Description |
|---|
LogRecordContext() |
| Modifier and Type | Method and Description |
|---|---|
static void |
addExtension(java.lang.String extensionName,
java.lang.String extensionValue)
Adds an extension key/value to the context.
|
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 |
removeExtension(java.lang.String extensionName)
Removes an extension key/value from the context
|
static boolean |
unregisterExtension(java.lang.String key)
Removes context extension registration.
|
public static final java.lang.String PTHREADID
public static void addExtension(java.lang.String extensionName,
java.lang.String extensionValue)
extensionName - String extensionName key name for the new extensionextensionValue - String extensionValue key value for the new extensionjava.lang.IllegalArgumentException - if parameter extensionName or extensionValue
are nullpublic static boolean removeExtension(java.lang.String extensionName)
extensionName - String extensionName associated with the registered extension.java.lang.IllegalArgumentException - if parameter extensionName is null.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