二进制日志记录
二进制日志记录是 WebSphere Application Server 传统版中基于高性能可扩展日志记录 (HPEL) 技术的高性能日志和跟踪工具。
概述
二进制日志记录提供了一种很方便的机制来存储和访问应用程序服务器或应用程序生成的日志、跟踪、System.err 和 System.out 信息。 二进制日志记录可以替代缺省日志和跟踪工具,该工具提供 JVM 日志和诊断跟踪文件(通常称为 messages.log 和 trace.log)。
日志和跟踪存储
二进制日志记录提供日志数据存储库和跟踪数据存储库。 请参阅下图以了解应用程序和应用程序服务器如何存储日志和跟踪信息。

- 应用程序代码的日志在根记录器中收集,该记录器将日志数据发送到 HPEL 日志记录框架中的日志/跟踪数据处理程序,以及缺省日志记录框架中的日志/跟踪数据处理程序。
- 应用程序服务器的日志数据由一个记录器收集,并发送到串行外围接口 (SPI),该接口将日志数据发送到 HPEL 日志记录框架中的日志/跟踪服务,以及缺省日志记录框架中的日志/跟踪服务。
- 每个框架中的日志/跟踪服务都会将该数据发送到该框架的日志/跟踪数据处理程序。
- HPEL 日志记录框架日志/跟踪数据处理程序将该数据发送到该框架中的日志数据存储库、跟踪数据存储库和文本日志。
- 缺省日志记录框架日志/跟踪数据处理程序将该数据发送至该框架中的消息日志和跟踪日志。
- 每个框架中的数据也会发送至控制台日志。
- 日志数据存储库
日志数据存储库是用于存储日志记录的存储工具。 通常由管理员复查日志数据。 这包括应用程序或服务器写入 System.out、System.err、OSGi 记录服务(LOG_INFO 级别或更高级别,包括 LOG_INFO、LOG_WARNING 和 LOG_ERROR)或 java.util.logging(“详细”级别或更高级别,包括“详细”、“配置”、“参考”、“审核”、“警告”、“严重”、“致命”和任何定制级别)的任何信息。
- 跟踪数据存储库
跟踪数据存储库是用于存储跟踪记录的存储工具。 跟踪数据通常供应用程序员或 WebSphere® Application Server 支持团队使用。 这包括级别为 LOG_DEBUG 或级别为 java.util.logging 的任何信息应用程序或服务器写入 OSGi 日志记录服务的级别低于 "详细信息" 级别 (包括 "详细信息" , "详细信息" , "详细信息" 和任何低于 "详细信息" 级别的定制级别)。
日志和跟踪性能
已对二进制日志记录进行设计和测试,以使其性能明显优于缺省日志和跟踪工具。 通过使用二进制日志记录而不是缺省日志和跟踪框架,可极大地改进在启用跟踪的情况下运行应用程序服务器对性能产生的影响。 另外,使用二进制日志记录还会导致频繁写入日志的应用程序更快地运行。
- 每个日志和跟踪事件都只存储在一个位置
日志事件 System.out 和 System.err 存储在日志数据存储库中。 跟踪事件存储在跟踪数据存储库中。 仅将每种类型的事件存储在一个位置可确保不会因重复进行数据存储而影响性能。
注: 在日志记录性能很重要的情况下,必须禁用控制台日志。 写入控制台日志中的任何内容都已经存储在日志数据存储库中。
- 除非数据需要格式化,否则不会将数据格式化
格式化数据以便用户阅读会占用处理器时间。 日志和跟踪数据会更快速地以专用二进制表示来存储,而不是在运行时格式化日志事件和跟踪事件数据。 这将提高日志和跟踪工具的性能。 通过将日志和跟踪格式化延迟到binaryLog命令已运行,从不查看的日志或跟踪部分永远不会格式化。
- 将日志和跟踪数据写入磁盘之前对其进行缓存
将大块数据写入磁盘比将相同数量的数据写入小块的效率更高。 二进制日志记录工具使您能够在将日志和跟踪数据写入磁盘之前对数据进行缓存。 缺省情况下,在将日志和跟踪数据写入磁盘之前,会将数据存储在 8 KB 缓冲区中。 如果缓冲区在 10 秒之内填满,那么会将缓冲区写入磁盘。 如果缓冲区未在 10 秒之内装满,那么会自动地将缓冲区写入磁盘以确保日志具有最新信息。
日志和跟踪的管理
已经将二进制日志记录设计为容易配置和了解。 例如,管理员很容易配置供日志和跟踪专用的磁盘空间量、日志和跟踪记录的保留时间以及由服务器来管理日志和跟踪内容。 作为另一个示例,可以使用一个易于使用的命令来访问所有日志,跟踪, System.out和 System.err 内容 (binaryLog) ,避免对特定内容要访问的文件产生任何可能的混淆。
- 从日志数据存储库和跟踪数据存储库中读取
日志数据和跟踪数据存储库以 WebSphere Application Server 专有格式存储,无法使用文本文件编辑器 (例如记事本或 VI) 进行读取。 您可以使用以下命令将日志数据和跟踪数据存储库复制为纯文本格式:binaryLog。

- binaryLog 命令
binaryLog是一个易于使用的命令行工具,供用户使用日志数据和跟踪数据存储库。binaryLog提供过滤和格式化选项,便于在日志数据和跟踪数据存储库中查找重要内容。 例如,用户可以过滤任何错误或警告,然后过滤在 10 秒钟之内发生的所有日志和跟踪条目,以找出同一线程上的关键错误消息。
- 使用日志和跟踪记录扩展内容进行过滤
二进制日志记录工具使开发者能够使用日志记录上下文 API (com.ibm.websphere.logging.hpel.LogRecordContext) 向日志记录和跟踪记录添加定制扩展。 您可以使用binaryLog命令行工具,用于根据日志和跟踪记录扩展的内容来过滤记录。
开发资源
已经对二进制日志记录进行设计,以便比缺省日志记录工具更灵活高效地处理日志和跟踪内容。 很容易对日志和跟踪内容进行过滤以仅显示感兴趣的记录。 您可以使用命令行 (请参阅binaryLog命令) ,或者开发者可以使用 HPEL API 创建功能强大的日志处理程序。

- 读取日志数据和跟踪数据
已经提供了一个 API,以使开发者容易开发一些工具来使用二进制日志和跟踪存储库中的内容。 例如,开发者可以编写 Java™ 程序来搜索日志和跟踪内容,以查找消息标识与重要消息标识的已知列表匹配的任何消息。 此 API 位于 com.ibm.websphere.logging.hpel 包中。 请参阅 API 文档以了解有关 HPEL 日志读取 API 的详细信息。
- 日志和跟踪记录可扩展性
开发者可以通过日志记录上下文 API (com.ibm.websphere.logging.hpel.LogRecordContext) 向日志记录和跟踪记录添加定制扩展。 当二进制日志记录存储日志和跟踪记录时,它包括同一线程上的日志记录上下文中存在的任何扩展。 例如,开发者可以编写 Servlet 过滤器,以向日志记录上下文添加重要的 HTTP 请求参数。 当该 Servlet 运行时,HPEL API 会向在同一线程上创建的任何日志和跟踪记录添加这些扩展。
与其他日志和跟踪记录字段一样,开发者可以使用 HPEL API 来访问记录扩展。 这在编写工具以从日志和跟踪存储库中读取时很有用。 在运行时,开发者还可以利用日志记录上下文 API 来访问定制日志处理程序、过滤器和格式化程序中的扩展。