JRas 消息和跟踪事件类型

基本 JRas 消息和事件类型与 WebSphere® Application Server 以本机方式识别的类型不同,因此 JRas 类型将映射至运行时环境的本机类型。可以使用定制过滤器和消息控件来控制处理 JRas 消息和跟踪事件的方式。

事件类型

不推荐使用本任务及其子任务中描述的 JRas 框架。但是,可以使用 Java™ 记录来获得类似结果。

独立 JRas 记录工具箱定义的基本消息和跟踪事件类型与 WebSphere Application Server 运行时识别的本机类型不相同。取而代之,基本 JRas 类型映射至本机类型。这种映射依平台或修订版的不同而有所不同。映射在后面的章节中讨论。

平台消息事件类型

WebSphere Application Server 运行时识别并处理的消息事件类型是在 RASIMessageEvent 接口中定义的,该接口由独立 JRas 记录工具箱提供。
表 1. 平台消息事件类型. 这些消息类型映射至本机消息类型,如下所示。
WebSphere Application Server 本机类型 JRas RASIMessageEvent 类型
审计 TYPE_INFO、TYPE_INFORMATION
警告 TYPE_WARN、TYPE_WARNING
错误 TYPE_ERR、TYPE_ERROR

[z/OS]通过使用 JRas RASIMessageEvent 类型的 TYPE_INFO 或 TYPE_INFORMATION 发出 WebSphere Application Server for z/OS® 审计跟踪,应用程序开发者可使用 JRas 来发出 MVS™ WTO(写入操作程序)消息。WebSphere Application Server for z/OS 审计跟踪映射至 MVS 路由代码 11 WTO(硬拷贝 WTO)。

平台跟踪事件类型

WebSphere Application Server 运行时识别并处理的跟踪事件类型是在 RASITraceEvent 接口中定义的,该接口由独立 JRas 记录工具箱提供。RASITraceEvent 接口提供非常丰富又很复杂的类型集。该接口定义简单的级别集以及枚举类型集。
  • 对于喜欢使用简单级别集的用户,RASITraceEvent 接口提供了 TYPE_LEVEL1TYPE_LEVEL2TYPE_LEVEL3。该实现提供对此级别集的支持。级别是分层的(即启用级别 2 将同时会启用级别 l,启用级别 3 将同时会启用级别 1 和 2)。
  • 对于喜欢使用较为复杂的值集合(可以是 OR'd)的用户,RASITraceEvent 接口提供了 TYPE_APITYPE_CALLBACKTYPE_ENTRY_EXITTYPE_ERROR_EXCTYPE_MISC_DATATYPE_OBJ_CREATETYPE_OBJ_DELETETYPE_PRIVATETYPE_PUBLIC, TYPE_STATICTYPE_SVC

跟踪事件类型按如下所示映射至本机跟踪类型。

表 2. WebSphere Application Server 本机类型和 JRas RASITraceEvent 级别类型. WebSphere Application Server 跟踪类型映射至 JRas RASITraceEvent 级别类型。
WebSphere Application Server 本机类型 JRas RASITraceEvent 级别类型
事件 TYPE_LEVEL1
进入退出 TYPE_LEVEL2
调试 TYPE_LEVEL3
表 3. WebSphere Application Server 本机类型和 JRas RASITraceEvent 枚举类型. WebSphere Application Server 跟踪类型映射至 JRas RASITraceEvent 枚举类型。
WebSphere Application Server 本机类型 JRas RASITraceEvent 枚举类型
事件 TYPE_ERROR_EXC、TYPE_SVC、TYPE_OBJ_CREATE、TYPE_OBJ_DELETE
进入退出 TYPE_ENTRY_EXIT、TYPE_API、TYPE_CALLBACK、TYPE_PRIVATE、TYPE_PUBLIC、TYPE_STATIC
调试 TYPE_MISC_DATA

为了简单起见,建议在整个应用程序中一致地使用跟踪类型方法之一。如果决定使用非级别类型,那么从每个类别中选择一种类型并在整个应用程序中自始至终都使用这些类型,这样可避免发生冲突。

消息和跟踪参数

各种消息日志记录和跟踪方法特征符都接受 ObjectObject[]Throwable 参数类型。WebSphere Application Server 按如下所示处理和格式化各种参数类型:
Primitives
Primitives(如 int 和 long)不能识别为 Object 类型的子类并且不能直接传递至这些方法之一。在将 primitive 值作为参数传递之前,必须将它变换为正确的 Object 类型(Integer 或 Long)。
对象
对 object 调用 toString 方法并导致显示 String。应对传递至消息记录或跟踪方法的任何 object 适当地实现 toString 方法。调用者的职责是保证 toString() 方法不会以明文的形式显示机密数据 (如,密码),并保证不引起无限递归。
Object[]
Object[] 类型用于将多个参数传递到消息记录或跟踪方法的情况。对数组中的每个 Object 调用 toString 方法。不能处理嵌套数组(嵌套数组即 Object 数组中的元素属于某个数组)。
Throwable
检索并显示 Throwable 类型的堆栈跟踪。
原语数组
原语数组(例如 byte[]int[])识别为一个 Object,但 Java 代码将其松散关联。总之,应尽可能避免使用原语数组。如果传递了原语数组,那么结果是不确定的,并且随所传递的数组类型、用于传递该数组的 API 和产品发行版的不同而有所变化。要获得一致结果,在将基本组数传递到方法之前,用户代码需要对它进行预处理并将其格式化为某种类型的 String 形式。如果未执行这样的预处理,可能会导致以下结果:
  • [B@924586a0b - 此消息解释为位置 X 中的字节数组。当将数组作为 Object[] 类型的一个成员传递时,就会返回此消息,对 byte[] 类型调用 toString 也会产生此消息。
  • 非法跟踪自变量:long 数组。当将原语数组传递到使用 Object 的方法时,通常会返回此响应。
  • 01040703: 字节数组的十六进制表示法。通常,当将字节数组传递到使用单个 Object 的方法时,就会出现此问题。此行为会变化,不可靠。
  • "1" "2": 通过将每个元素转换成整数并对整数调用 toString 而形成的 int[] 类型成员的 String 表示法。此行为会变化,不可靠。
  • [Ljava.lang.Object;@9136fa0b: 对象数组。通常,当传递包含嵌套数组的数组时会看到此响应。

控制消息记录

将消息写到 WebSphere Application Server 日志要求该消息类型通过三层过滤或筛滤:
  1. 消息事件类型必须是 RASIMessageEvent 接口中定义的消息事件类型之一。
  2. 消息事件类型的记录必须由消息记录器的掩码状态启用。
  3. 消息事件类型必须通过任何由 WebSphere Application Server 运行时设定的过滤条件。

当从管理器类中获取 WebSphere Application Server 记录器时,掩码的初始设置会将所有本机消息事件类型转发给 WebSphere Application Server 处理程序。通过程序化地设置消息记录器掩码的状态 可以控制要记录什么消息。

产品的某些修订版对服务器进程支持用户指定的消息过滤器级别。设置这样一个过滤器级别时,只有指定严重性级别的消息才写入到 WebSphere Application ServerWebSphere Application Server 可能会过滤掉通过消息记录器掩码检查的消息类型。

控制跟踪

产品的每个版本都提供启用或禁用跟踪的机制。各种修订版都可支持静态跟踪启用(启动服务器前指定跟踪设置)和/或动态跟踪启用(可以动态修改正在运行的服务器进程的跟踪设置)。

将跟踪记录写到 WebSphere Application Server 要求该跟踪类型通过三层过滤或筛滤:
  1. 跟踪事件类型必须是 RASITraceEvent 接口中定义的跟踪事件类型之一。
  2. 跟踪事件类型的记录必须由跟踪记录器的掩码状态启用。
  3. 跟踪事件类型必须通过任何由 WebSphere Application Server 运行时设定的过滤条件。

当从管理器类中获取记录器时,掩码的初始设置是抑制所有的跟踪类型。此规则的例外情况是:WebSphere Application Server 运行时支持静态跟踪启用,并且指定了该跟踪记录器的非缺省启动跟踪状态。与消息记录器不同,WebSphere Application Server 可以动态修改跟踪记录器的跟踪掩码状态。WebSphere Application Server 只修改跟踪记录器掩码中对应于在 RASITraceEvent 接口中定义的值的那一部分。WebSphere Application Server 不会修改可能正用于用户定义的类型的未定义掩码位。

当使用某些平台上可用的动态跟踪启用功能时,会在应用程序服务器运行时和跟踪记录器的跟踪掩码中反映跟踪状态更改。如果用户代码通过程序更改与 RASITraceEvent 接口中定义的值相对应的跟踪掩码中的位,那么跟踪记录器的掩码状态和运行时状态将变得不同步,并且会产生意外的结果。因 此,不允许通过程序更改与 RASITraceEvent 接口中定义的值相对应的掩码的位。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_jrasmsgs
文件名:rtrb_jrasmsgs.html