将诊断提供程序标识和记录器关联
如果要使用诊断提供程序来管理警报和消息,那么需要将诊断提供程序标识与记录器相关联。可通过动态方式或静态分配完成本任务。
关于此任务
其诊断通过诊断提供程序 Mbean 管理的组件应在所有记录的消息中包含该诊断提供程序标识 (DPID)。在某些情况下,单个的记录器总是使用相同的 DPID 记录。在那些情况下,适合将 DPID 与记录器静态关联。在其他情况下,一个记录器可能代表不同的诊断域进行记录。例如,尽管每个数据源具有独立的诊断提供程序 Mbean,它们却都共享相同的记录器。在那些情况下,DPID 可以在每个日志记录调用中动态提供。
静态分配
关于此任务
过程
将 DPID 和记录器关联:
Logger logger = Logger.getLogger("com.ibm.ws.MyClass");
DiagnosticProviderHelper.addDiagnosticProviderIDtoLogger(logger, dpid);
动态分配
关于此任务
通过将它们包含为第一个消息参数,DPID 可以和单一记录请求关联,以 DPID: 为前缀。要使用记录器将
DPID 与单一记录请求相关联:
Object[] parms = new Object[] { "DPID:" + dpid };
logger.logp(classname, methodname, "MSG0001", parms);
注意在动态情况下 DPID 不需要实际地在格式化的消息中显示。以下两个示例对此进行了说明:
(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 your message. MSG0002=This message includes the DPID...it's value is {0}.
建议那些消息不要将 DPID 包含在格式化的消息中。如上所示,这通过不在资源束的消息值中包含 {0} 完成。