对于直接写入本地错误日志,可能不需要消息处理节点和解析器,这是因为建议用户定义的扩展使用异常来报告错误。然而,您可以选择写入重要的事件、错误,或相反,将与 WebSphere Message Broker 相同的方式用于问题确定及操作用途。
凭借 C 代码,您可以使用实用程序函数 CciLog 来这样做。此函数接受两个参数 messageSource 和 messageNumber,它们分别定义了事件源和该源中消息的实际整数表示。
对于 Java 代码,类 MbService 提供了将信息记录到事件日志的静态方法。要将消息记录到事件日志中,您需要将消息打包到标准的 Java 资源束中。您可以使用三种记录方法中的一种,来传递资源束名称和消息密钥。将完全解析该消息,然后将它作为单独的插入而插入到相应的代理消息中,如下所示:
对于 Windows 系统,消息写入 Windows 事件日志中,且您的消息目录必须作为 Windows DLL 传递。
对于 Linux 和 UNIX 系统,这些消息写入 SYSLOG 工具中,且您的消息目录必须作为 XPG4 消息目录传递。
以上包括正常处理时生成的异常。您还必须对部署和配置消息流时生成的异常有所准备。这些配置异常生成的消息被报告回工作台,以便显示给工作台用户。要实现此结果,必须创建正确命名的 Java 属性文件,并将它复制到每个工作台中。
在 Windows 上,消息目录作为 Windows DLL 传递,您必须如下所述来创建该 Windows DLL。这包含事件消息的定义,使事件查看器可以根据您的应用程序所撰写的事件消息来显示可读的格式。编译消息目录时,将创建头文件,它为您创建的每个事件消息号都定义了符号值。该头文件包含在您的应用程序中。
mc -v -w -s -h c:\mymessages -r c:\mymessages mymsg.mc
其中 c:\mymessages 是输出文件的路径和目录,而 mymsg.mc 是输入文件的名称。
消息编译器生成输出头(.h)文件,该文件包含符号 #define,它们映射到在 input.mc 文件中编码的每个消息号。当编译用户定义的扩展源文件(该文件使用 CciLog 实用程序函数撰写您已定义的事件消息)时,必须包含此头文件。CciLog 的 messageNumber 参数必须使用输出头文件中散列定义的正确值。
RC /v <filename>.rc
LINK /DLL /NOENTRY <filename>.res
regedit
HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services EventLog Application
右键单击 Application 并选择新建 -> 键。新键会直接在 Application 键下创建(而不是 WebSphere Message Broker 下)。您必须将在 CciLog 调用的 messageSource 参数上指定的名称赋予该键。