バイナリー・ロギング

バイナリー・ロギングは、WebSphere Application Server traditional の High Performance Extensible Logging (HPEL) テクノロジーを基にした高性能のログおよびトレース機能です。

概要

注: バイナリー・ロギング機能を使用するには、これを使用可能にする必要があります。

バイナリー・ロギングは、アプリケーション・サーバーまたはユーザー・アプリケーションが生成するログ、トレース、System.err、および System.out 情報の保管およびアクセス用の便利なメカニズムを提供します。 デフォルトのログおよびトレース機能の代わりとなり、通常は messages.log および trace.log という名前の JVM ログおよび診断トレース・ファイルを提供します。

ログおよびトレースのストレージ

バイナリー・ロギングには、ログ・データ・リポジトリーとトレース・データ・リポジトリーがあります。 以下の図に、アプリケーションおよびアプリケーション・サーバーがどのようにログ情報およびトレース情報を保管するのかを示します。

HPEL および基本ロギングのログおよびトレースの保管

ログ・データ・リポジトリー

ログ・データ・リポジトリーは、ログ・レコード用の保管機能です。 通常、ログ・データは、管理者が確認するためのものです。これには、アプリケーションまたはサーバーが System.out、System.err、レベル LOG_INFO 以上 (LOG_INFO、LOG_WARNING、および LOG_ERROR を含む) での OSGi ロギング・サービス、またはレベル Detail 以上 (Detail、Config、Info、Audit、Warning、Severe、Fatal、およびレベル Detail 以上のすべてのカスタム・レベル) での java.util.logging に書き込むすべての情報が含まれます。

トレース・データ・リポジトリー

トレース・データ・リポジトリーは、トレース・レコード用の保管機能です。トレース・データは通常、アプリケーション・プログラマーまたは WebSphere® Application Server サポート・チームが使用するためのものです。これには、アプリケーションまたはサーバーがレベル LOG_DEBUG での OSGi ロギング・サービス、または Detail より低いレベル (Fine、Finer、Finest、およびレベル Detail より低いすべてのカスタム・レベル) での java.util.logging に書き込むすべての情報が含まれます。

ログおよびトレースのパフォーマンス

バイナリー・ロギングは、デフォルトのログおよびトレース機能よりもずっと優れたものになるよう設計され、テストされています。デフォルトのログおよびトレース・フレームワークではなく、バイナリー・ロギングを使用することによって、トレースを有効にしてアプリケーションを実行する場合のパフォーマンスに対する影響が大幅に改善されました。さらに、バイナリー・ロギングを使用することで、ログへの書き込みを頻繁に実行するアプリケーションの実行がより高速になります。

ログおよびトレースのイベントはそれぞれ 1 カ所のみに保管される

ログ・イベント、System.out、および System.err は、ログ・データ・リポジトリーに保管されます。トレース・イベントは、トレース・データ・リポジトリーに保管されます。 各タイプのイベントを 1 カ所だけに保管することで、重複したデータ保管のためにパフォーマンスが損なわれることがなくなります。

注: ロギングのパフォーマンスが重要なケースでは、コンソール・ログを使用不可にしてください。 コンソール・ログに書き込まれる内容はすべて、ログ・データ・リポジトリーに保管されています。

アプリケーション・サーバーをログ・データ・リポジトリーとトレース・データ・リポジトリーに線で結んだ図

必要がなければ、データをフォーマット設定しない

ユーザーに対する可読性のためにデータをフォーマット設定すると、プロセッサー時間が使用されます。ログおよびトレース・データは、実行時にログ・イベント・データおよびトレース・イベント・データをフォーマット設定せずに、専有バイナリー表現でより高速に保管されます。これにより、ログおよびトレース機能のパフォーマンスが向上します。binaryLog コマンドの実行までログおよびトレースのフォーマット設定を見送ることで、ログまたはトレースの中で表示しない部分は、フォーマット設定されません。

ログ・データおよびトレース・データはディスク書き込みの前にバッファーに入る

データを大きなブロックでディスクに書き込むほうが、同じデータ量を小さなブロックに分けて書き込むよりも効率的です。バイナリー・ロギングには、ログおよびトレース・データをディスクに書き込む前にバッファーに入れる機能があります。デフォルトでは、ログ・データおよびトレース・データは、ディスクに書き込まれる前に、8 KB のバッファーに保管されます。バッファーは、10 秒以内に満杯になると、ディスクに書き込まれます。バッファーがその時間内に満杯にならない場合には、ログに最新情報が含まれるようにするために、自動的にディスクに書き込まれます。

ログおよびトレースの管理

バイナリー・ロギングは、構成しやすく、分かりやすいように設計されています。例えば、管理者は、ログまたはトレース専用のディスク・スペースの量や、ログおよびトレース・レコードの保存期間を簡単に構成したり、ログおよびトレース内容の管理をサーバーに任せたりすることができます。また、使いやすい 1 つのコマンド (binaryLog) で、ログ、トレース、System.out、および System.err のすべての内容にアクセスすることができるため、特定の内容についてどのファイルにアクセスすればよいのか、迷うことがなくなります。

ログ・データ・リポジトリーおよびトレース・データ・リポジトリーの読み取り

ログ・データ・リポジトリーおよびトレース・データ・リポジトリーは、WebSphere Application Server の専有フォーマットで保管されており、メモ帳や vi などのテキスト・ファイル・エディターで判読することはできません。binaryLog コマンドを使用して、ログ・データ・リポジトリーおよびトレース・データ・リポジトリーをプレーン・テキスト・フォーマットにコピーできます。

ログ・ビューアーでログ・データ・リポジトリーおよびトレース・データ・リポジトリーからデータをテキスト・ログに取り出す様子を示す図。
binaryLog コマンド

binaryLog は、ユーザーがログ・データ・リポジトリーおよびトレース・データ・リポジトリーを処理するために提供されている、使いやすいコマンド行ツールです。binaryLog にはフィルター・オプションとフォーマット・オプションが用意されており、ログ・データ・リポジトリーおよびトレース・データ・リポジトリー内の重要な内容を簡単に検索することができます。例えば、ユーザーは、すべてのエラーまたは警告をフィルターに掛けてから、重要なエラー・メッセージから 10 秒以内に同一スレッドで発生したすべてのログおよびトレースの項目をフィルターに掛けることができます。

ログ・レコードおよびトレース・レコードの拡張内容を使用したフィルター

バイナリー・ロギング機能では、開発者が、ログ・レコード・コンテキスト API (com.ibm.websphere.logging.hpel.LogRecordContext) を使用してログ・レコードおよびトレース・レコードにカスタム拡張を追加するための機能を備えています。 ログ・レコードおよびトレース・レコード拡張の内容に基づいてレコードをフィルタリングするには、binaryLog コマンド行ツールを使用することができます。

開発リソース

バイナリー・ロギングは、デフォルトのロギング機能よりも、さらに柔軟かつ効率的にログおよびトレースの内容を処理できるように設計されています。関心があるレコードのみを表示するために、ログおよびトレースの内容を簡単にフィルターに掛けることができます。ユーザーがコマンド行を使用する (binaryLog コマンドの説明を参照) ことも、開発者が HPEL API を使用して強力なログ処理プログラムを作成することも可能です。

ログ・データ・リポジトリーおよびトレース・データ・リポジトリーと com.ibm.websphere.logging.hpel API を線で結んだ図。
ログ・データおよびトレース・データの読み取り

バイナリー・ログ・リポジトリーおよびトレース・リポジトリーの内容を取り込むツールの開発を開発者が簡単に行えるようにするための API が提供されています。 例えば、開発者は、ログおよびトレースの内容を検索して、重要なメッセージ ID の既知のリストと一致するメッセージ ID を持つメッセージを検出する Java™ プログラムを作成できます。この API は、com.ibm.websphere.logging.hpel パッケージに入っています。この HPEL ログ読み取り API について詳しくは、API 資料を参照してください。

ログおよびトレース・レコードの拡張性

開発者は、ログ・レコード・コンテキスト API (com.ibm.websphere.logging.hpel.LogRecordContext) によってログ・レコードおよびトレース・レコードにカスタム拡張を追加することができます。 バイナリー・ロギングはログおよびトレース・レコードを格納する際、同じスレッド上のログ・レコード・コンテキスト内に存在する拡張をすべて含めます。例えば、開発者は、サーブレット・フィルターを作成して、重要な HTTP 要求のパラメーターをログ・レコード・コンテキストに追加できます。そのサーブレットの実行中、HPEL API は同じスレッド上で作成されるどのログ・レコードおよびトレース・レコードにもそれらの拡張を追加します。

その他のログおよびトレース・レコードのフィールドと同様に、開発者は、HPEL API を使用してレコードの拡張にアクセスできます。これは、ログ・リポジトリーおよびトレース・リポジトリーから読み取るツールを作成する場合に役立ちます。開発者は、ログ・レコード・コンテキスト API を利用して、実行時にカスタム・ログ・ハンドラー、フィルター、およびフォーマッターで拡張にアクセスすることも可能です。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_HPELOverview
ファイル名: cwlp_HPELOverview.html