+

Search Tips   |   Advanced Search

Associating a Diagnostic Provider ID with a logger


For a Diagnostic Provider to manage alerts and messages, we need to associate the Diagnostic Provider ID with a logger. This can be done dynamically or through a static assignment.

Components whose diagnostics are managed through a Diagnostic Provider MBean should include the Diagnostic Provider ID (DPID) in all logged messages. In some cases a single logger always logs with the same DPID. In those cases, it is appropriate to statically associate the DPID with the logger.

In other cases, a logger might log on behalf of various diagnostic domains. For example, although every data source has a separate Diagnostic Provider MBean, they all share the same logger. In those cases, the DPID can be dynamically supplied on each logging call.

Static Assignment


The method below statically assigns a DPID to a logger.

  Associate a DPID with a logger:

Logger logger = Logger.getLogger("com.ibm.ws.MyClass"); DiagnosticProviderHelper.addDiagnosticProviderIDtoLogger(logger, dpid);

Dynamic Assignment


DPIDs can be associated with a single log request by including them as the first message parameter, prefixed with DPID:. To associate a DPID with a single log request using a logger:

Object[] parms = new Object[] { "DPID:" + dpid }; logger.logp(classname, methodname, "MSG0001", parms);

Note that in the dynamic case, the DPID does not need to actually show up in the formatted message. The two examples below illustrate:

(in resource bundle)

// by not including {0} first parm is not printed in the message. MSG0001=This message does not include the DPID.      


// note - it is not recommended to print the DPID in the message. MSG0002=This message includes the DPID...it's value is {0}.  

IBM recommends that messages not include the DPID in the formatted message. As shown above, this is done by not including {0} in the message value in the resource bundle.