public class LogRecordContext
extends java.lang.Object
There are two ways to add key-value pairs to the LogRecordContext. The one you should use depends on whether the value is fixed, or variable.
Fixed value extensions
When you want to add an extension with a fixed value use the addExtension method. As an example, the following code uses addExtension to register an extension.
Logger myLogger = Logger.getLogger("myLogger"); LogRecordContext.addExtension("someName", "someValue"); // This message will have the someName=someValue extension added to it logger.info("some message"); LogRecordContext.removeExtension("someName"); // This message will not have the extension added to it logger.info("some other message");
Variable value extensions
When you want to add an extension with a callback method to compute the extension value use the registerExtension method. As an example, the following code uses registerExtension to add an 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"); } }
Using the extensions
Log handlers can use the key-value pairs in log and trace output by calling
the getExtensions(Map
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
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.
|
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 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 null
public 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