ログ ファイルのコンフィグレーションとログ メッセージのフィルタ処理
WebLogic ロギング サービスには、ログ メッセージの作成、表示、フィルタ、およびリスン機能があります。ログ メッセージは、WebLogic Server インスタンス、サブシステム、および WebLogic Server またはクライアント JVM 上で実行される J2EE アプリケーションによって生成されます。
以下の節では、WebLogic ロギング サービス環境、ロギング プロセス、およびログ ファイルについて説明します。
WebLogic Server サブシステムは、ロギング サービスを使用して、新しいアプリケーションのデプロイメント、1 つまたは複数のサブシステムの障害などのイベントに関する情報を提供します。サーバ インスタンスは、それを使用してサーバの状態を通知したり、特定のイベントに応答したりします。たとえば、WebLogic ロギング サービスを使用すると、エラー状態を報告したり、特定のサブシステムからログ メッセージをリスンしたりすることが可能です。
各 WebLogic Server インスタンスで、サーバ ログが保持されます。各 WebLogic Server ドメインは WebLogic Server の複数のインスタンスを同時に実行できるので、ロギング サービスにより複数のサーバ インスタンスで生成されるメッセージを収集して、単一の、ドメイン全体のメッセージ ログにまとめます。ドメイン ログでは、ドメイン全体の状態を確認できます。「サーバ ログ ファイルとドメイン ログ ファイル」を参照してください。
以下の節では、ロギング環境について説明し、ロギング プロセスの概要を示します。
どのロギング システムも、基本的にはログ メッセージを生成するコンポーネントとメッセージを配信 (パブリッシュ) するコンポーネントで構成されます。デフォルトでは、WebLogic Server サブシステムは、メッセージ カタログ機能を使用してメッセージを生成し、Java Logging API を使用してメッセージを配信します。開発するアプリケーションに対してメッセージ カタログを使用することもできます。
メッセージ カタログ フレームワークでは、アプリケーションが WebLogic のサーバ ログに独自のメッセージ セットを送るために使用する一連のユーティリティと API が提供されます。このフレームワークは、ログ メッセージをローカライズする必要のあるアプリケーションにとって理想的ですが、ローカライズの不要なアプリケーションの場合でも、状態の通信や出力のためにフレキシブルで優れた一連のツールを利用できます。
『アプリケーション ロギングの WebLogic ロギング サービス ユーザーズ ガイド』の「WebLogic Server でのメッセージ カタログの使い方」を参照してください。
インターナショナライズする必要がないメッセージまたは WebLogic I18n フレームワークの外部でインターナショナライズされたメッセージをロギングするために、メッセージ カタログ フレームワークの使用に加え、アプリケーションで weblogic.logging.NonCatalogLogger
API を使用して WebLogic サーバ ログにメッセージを送信できます。カタログからメッセージを呼び出す代わりに NonCatalogLogger
を使用することで、メッセージ テキストをアプリケーション コードに直接配置します。
『アプリケーション ロギングの WebLogic ロギング サービス ユーザーズ ガイド』の「NonCatalogLogger API の使用」を参照してください。
メッセージを配信するために、WebLogic Server では Java ベースのロギングがデフォルトでサポートされています。LoggingHelper
クラスを使用すると、サーバ ロギング用の java.util.logging.Logger
オブジェクトへのアクセスが可能になります。これにより、Java Logging API を利用してカスタム ハンドラ、フィルタ、およびフォーマッタを追加できます。Sun API のドキュメント (http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/package-summary.html) を参照してください。
または、ログ メッセージの配信に Jakarta Project Log4j API を使用するように WebLogic Server をコンフィグレーションすることもできます。「Log4j と Commons Logging API」を参照してください。
ロガー - Logger
オブジェクトは、特定のサブシステムまたはアプリケーション コンポーネントのメッセージをロギングします。WebLogic ロギング サービスは、java.util.logging.Logger
のインスタンスを 1 つ使ってメッセージ カタログ、NonCatalogLogger
、およびデバッグ システムからのメッセージをロギングします。
ハンドラ - java.util.logging.Handler
を拡張するクラス。ロガーに送られたログ要求を受信します。各 Logger
インスタンスは、ログ メッセージをディスパッチする対象となる複数のハンドラに関連付けられます。ハンドラは、サーバ ログ ファイルの場合はファイル ハンドラなど、特定の種類のログ メッセージにアタッチされます。
アペンダ - Log4j でハンドラに当たるもの。この場合は、org.apache.log4j.Appender
を実装するクラスのインスタンスで、ログ イベントを受信する org.apache.log4j.Logger
に登録されます。
WebLogic Server サブシステムまたはアプリケーション コードから、ログ要求を Logger
オブジェクトに送信します。Logger
オブジェクトでは、パブリッシュ用に Handler
オブジェクトに渡される LogRecord
オブジェクトを割り当てます。ロガーとハンドラではともに重大度と (必要に応じて) フィルタを使用して、特定の LogRecord
オブジェクトに焦点を絞るかどうかが決定されます。外部に LogRecord
オブジェクトをパブリッシュする必要がある場合、ハンドラでは必要に応じてフォーマッタを使用し、ログ メッセージをローカライズおよびフォーマットしてから I/O ストリームにパブリッシュできます。
図 2-1 に、WebLogic Server のロギング プロセスを示します。メッセージの生成には WebLogic カタログ API または Commons Logging API を使用し、メッセージの配信用オプションとして Java Logging (デフォルト) および Log4j を指定します。
図 2-1 WebLogic Server ロギング プロセス
図 2-1 に示されているプロセスは以下のとおりです。
たとえば、標準出力のハンドラはフォーマットされたメッセージを標準出力に出力し、ファイル ハンドラはフォーマットされた出力をサーバ ログ ファイルに書き込みます。ドメイン ログ ブロードキャスタは管理サーバにあるドメイン ログにログ メッセージを送信し、JMX ログ ブロードキャスタはリモート クライアント上の JMX リスナにログ メッセージを送信します。
また、メモリ ハンドラは、WebLogic Server Administration Console から最新のログ レコード エントリを参照できるようにメモリ内の循環バッファに最新のログ イベントを保持します。サーバに致命的な障害が発生しても、サーバ イメージ キャプチャ機能を有効にしている場合は、メモリ ハンドラの内容がサーバ イメージ キャプチャに記録されます。
サーバ イメージ キャプチャの詳細については、『WebLogic 診断フレームワークのコンフィグレーションと使い方』の「診断イメージのコンフィグレーションとキャプチャ」を参照してください。
WebLogic ロギング サービスで Java ロギングまたは Log4j を使用する場合は、以下の推奨事項を考慮します。
Logger
参照を使用する。詳細については、「WebLogic ロギング サービスでの Log4j の使い方」を参照してください。
サブシステムおよびアプリケーションからのメッセージは、すべてローカル ホスト コンピュータ上のサーバ ログ ファイルに書き込まれます。デフォルトでは、サーバ ログ ファイルは、サーバ インスタンスのルート ディレクトリの下の logs
ディレクトリにあります。たとえば、DOMAIN_NAME\
servers
\SERVER_NAME\
logs
\SERVER_NAME.
log
です。DOMAIN_NAME
はドメインを置いたディレクトリの名前、SERVER_NAME
はサーバの名前です。
メッセージをサーバ ログ ファイルに書き込むほかにも、各サーバ インスタンスはそのメッセージのサブセットをドメイン全体のログ ファイルに転送できます。デフォルトでは、重大度が NOTICE
以上のメッセージのみが転送されます。転送されるメッセージ セットは変更できますが、サーバは重大度が DEBUG
のメッセージを転送できません。Administration Console オンライン ヘルプの「ドメイン ログへのメッセージの転送」を参照してください。
ドメイン ログ ファイルは、ドメイン全体のステータスを確認するための中心となるファイルです。ドメイン ログは、管理サーバの logs
ディレクトリにあります。ドメイン ログ ファイルのデフォルトの名前と場所は、DOMAIN_NAME\
servers
\ADMIN_SERVER_NAME\
logs
\DOMAIN_NAME.
log
です。DOMAIN_NAME
はドメインを配置したディレクトリの名前、ADMIN_SERVER_NAME
は管理サーバの名前です。Administration Console オンライン ヘルプの「ドメイン ログ ファイルの名前と場所の変更」を参照してください。
ドメイン ログにメッセージを転送するために、各サーバ インスタンスはそのログ メッセージをブロードキャストします。サーバは、重大度が DEBUG
のメッセージを除くすべてのメッセージとメッセージ テキストをブロードキャストします。
管理サーバは、これらのメッセージのサブセットをリスンし、それらをドメイン ログ ファイルに書き込みます。これらのメッセージをリスンするために、管理サーバはリスナを各管理対象サーバに登録します。デフォルトでは、リスナには重大度が NOTICE
以上のメッセージのみを管理サーバに転送するためのフィルタが含まれます (図 2-2 を参照)。
図 2-2 WebLogic のサーバ ログとドメイン ログ
各 WebLogic Server インスタンスについて、デフォルト フィルタをオーバーライドし、デフォルトとは異なるメッセージ セットをドメイン ログ ファイルに書き込むログ フィルタを作成できます。WebLogic Server インスタンスのログ フィルタの設定については、Administration Console オンライン ヘルプの「ログ フィルタの作成」を参照してください。
管理サーバにアクセスできない場合でも、管理対象サーバはローカル サーバ ログ ファイルにメッセージを書き込み続けますが、管理サーバにアクセスできない間に生成されたメッセージは追跡されません。たとえば、2 時間アクセスできなかった後に管理サーバが復元された場合、その 2 時間に生成されたメッセージはドメイン ログに含まれません。『サーバの起動と停止の管理』の「MSI モードとドメイン ログ ファイル」を参照してください。
WebLogic Server 内の各サブシステムは、ログ メッセージを生成してそのステータスを送信します。たとえば、WebLogic Server インスタンスを起動すると、セキュリティ サブシステムによって初期化ステータスを報告するメッセージが書き込まれます。サブシステムが生成するメッセージの記録を保持するために、WebLogic Server によって生成されたメッセージがログ ファイルに書き込まれます。
サーバ ログには、サーバの起動と停止、新しいアプリケーションのデプロイメント、1 つまたは複数のサブシステムの障害などのイベントに関する情報が記録されます。サーバ ログ メッセージには、イベントの時刻と日付についての情報や、イベントを開始したユーザの ID が含まれます。
これらのサーバ ログ メッセージを表示してソートすることで、問題の検出、障害発生源の特定、およびシステム パフォーマンスの監視ができます。また、これらのメッセージをリスンして自動的に応答するクライアント アプリケーションを作成することもできます。たとえば、サブシステムの障害を知らせるメッセージをリスンし、システム管理者に電子メールを送信するアプリケーションを作成できます。
サーバ ログ ファイルは、サーバ インスタンスのホスト コンピュータに配置されます。各サーバ インスタンスには、独自のサーバ ログ ファイルがあります。デフォルトでは、サーバ ログ ファイルは、サーバ インスタンスのルート ディレクトリ配下の logs
ディレクトリにあります。たとえば、DOMAIN_NAME\
servers
\SERVER_NAME\
logs
\SERVER_NAME.
log
です。DOMAIN_NAME
はドメインを置いたディレクトリの名前、SERVER_NAME
はサーバの名前です。Administration Console オンライン ヘルプの「サーバ ログ ファイルの名前と場所の変更」を参照してください。
サーバ ログ ファイルのメッセージを参照するには、WebLogic Server のホスト コンピュータにログインして標準のテキスト エディタを使用するか、任意のコンピュータにログインして Administration Console のログ ファイル ビューアを使用します。Administration Console オンライン ヘルプの「サーバ ログの表示」を参照してください。
注意 : ログ ファイルは手作業で編集しないようにします。ログ ファイルを修正すると、タイムスタンプが変更されてログ ファイルのローテーションが混乱するおそれがあります。また、編集によりファイルがロックされて、WebLogic Server から更新できなくなり、アクセサ機能の動作を妨げる場合があります。
診断アクセサ サービスについては、『WebLogic 診断フレームワークのコンフィグレーションと使い方』の「データ アクセサを使用した診断データへのアクセス」を参照してください。
メッセージをログ ファイルに書き込むほかにも、各サーバ インスタンスはメッセージのサブセットを標準出力に出力することができます。通常、標準出力は、サーバ インスタンスが実行されているシェル (コマンド プロンプト) です。ただし、オペレーティング システムによっては他の場所に標準出力をリダイレクトできます。デフォルトでは、サーバ インスタンスは重大度が NOTICE
以上のメッセージのみを標準出力に出力します (重大度については、「メッセージの重大度」を参照)。重大度のしきい値を変更すると、サーバが標準出力に出力するメッセージを増減できます。
ノード マネージャを使用して管理対象サーバを起動する場合、通常は管理対象サーバの起動時に stdout
または stderr
に出力されるメッセージは、代わりに Administration Console に表示され、そのサーバ インスタンスの単一のログ ファイル SERVER_NAME
.out
に書き込まれます。サーバ インスタンスの出力ログは、WebLogic Server の SERVER_NAME.
log
ファイルとともに、サーバ インスタンスのルート ディレクトリ配下の同じ logs
ディレクトリにあります。たとえば、DOMAIN_NAME\
servers
\SERVER_NAME\
logs
\SERVER_NAME.
out
です。DOMAIN_NAME
はドメインを置いたディレクトリの名前、SERVER_NAME
はサーバの名前です。
ノード マネージャは、独自の起動メッセージとステータス メッセージを単一のログ ファイル NM_HOME
/nodemanager.log
に書き込みます。NM_HOME
は、ノード マネージャのインストール ディレクトリ (デフォルトでは、WL_HOME
/common/nodemanager
) を示します。
ノード マネージャ ログ ファイルの詳細については、『サーバの起動と停止の管理』の「ノード マネージャのログ ファイルとコンフィグレーション ファイル」を参照してください。
サーバ ログ メッセージとログ ファイルは、サーバまたはアプリケーションの動作に影響を与えるイベントおよび状況を通知します。一部のサブシステムでは、通常の操作状況でサブシステムの対話を監査するために追加のログ ファイルが保持されます。以下のリストに、それぞれの追加ログ ファイルを示します。
トランザクション マネージャは、デフォルト永続ストアを使用して、トランザクション ログ ファイルを格納します。Administration Console を使用すると、デフォルト ストアの場所を変更できます。Administration Console オンライン ヘルプの「トランザクション回復サービスの移行のためのデフォルト永続ストアのコンフィグレーション」を参照してください。
WebLogic 監査プロバイダによって記録されたすべての監査情報は、WL_HOME\
DOMAIN_NAME
\servers\
SERVER_NAME
\logs\DefaultAuditRecorder.log
に保存されます。監査プロバイダはセキュリティ レルム単位でコンフィグレーションされますが、各サーバは監査データをサーバ ディレクトリにある各自のログ ファイルに書き込みます。
JMS サーバ ログ ファイルには、メッセージの生成、消費、削除など、メッセージの基本的なライフ サイクル イベントについての情報が格納されます。サブジェクト メッセージをホストする JMS 送り先のコンフィグレーションでメッセージのロギングが有効になっている場合、メッセージの基本的なライフ サイクル イベントは、JMS メッセージ ログ ファイルにメッセージ ログ イベントを生成します。
メッセージ ログは、サーバ インスタンスのルート ディレクトリ配下の logs
ディレクトリにあります (DOMAIN_NAME\
servers
\SERVER_NAME\
logs
\
jmsServers
\SERVER_NAME
JMSServer
\
jms.messages.log
)。DOMAIN_NAME
はドメインを配置したディレクトリの名前、SERVER_NAME
はサーバの名前です。
JMS サーバを作成した後には、ログ ファイルのデフォルト名を変更できると共に、古いログ メッセージを別のファイルに移動 (ローテーション) するための条件をコンフィグレーションできます。Administration Console オンライン ヘルプの「トピック メッセージのロギングのコンフィグレーション」と『WebLogic JMS のコンフィグレーションと管理』の「JMS 統計のモニタとメッセージの管理」を参照してください。
WebLogic Server インスタンスは、メッセージをサーバ ログ ファイルに書き込みます。各メッセージの先頭行は ####
で始まり、その後にメッセージの属性が続きます。各属性は山括弧で囲まれます。
####<Sept 22, 2004 10:46:51 AM EST> <Notice> <WebLogicServer> <MyComputer> <examplesServer> <main> <<WLS Kernel>> <> <null> <1080575211904> <BEA-000360>
<Server started in RUNNING mode>
この例では、メッセージの属性は、Locale-formatted Timestamp、Severity、Subsystem、Machine Name、Server Name、Thread ID、User ID、Transaction ID、Diagnostic Context ID、Raw Time Value、Message ID、および Message Text です (各属性については、「メッセージの属性」を参照)。
メッセージがトランザクションのコンテキストで記録されたものではない場合、Transaction ID は存在しませんが、Transaction ID のための山括弧は配置されます。
メッセージにスタック トレースが含まれている場合、スタック トレースはメッセージ テキストに含まれます。
WebLogic Server ではメッセージの書き込みに、ホスト コンピュータのデフォルトの文字エンコーディングを使用します。
WebLogic Server インスタンスがメッセージを標準出力に書き込むとき、その出力に ####
というプレフィクスと、Server Name、Machine Name、Thread ID、User ID、Transaction ID、Diagnostic Context ID、および Raw Time Value フィールドは含まれません。
次に、前節のメッセージがどのように標準出力に出力されるかを示します。
<Sept 22, 2004 10:51:10 AM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
この例では、メッセージの属性は、Locale-formatted Timestamp、Severity、Subsystem、Message ID、および Message Text です。
どの WebLogic Server インスタンスのメッセージにも、表 2-1 に示す一連の属性が含まれています。また、アプリケーションが WebLogic ロギング サービスを使用してメッセージを生成する場合、そのメッセージにこれらの属性が含まれます。
|
|
|
|
|
|
|
|
|
|
|
|
WebLogic Server のログ メッセージの重大度属性は、メッセージで報告されるイベントまたは状況の潜在的な影響を示します。
表 2-2 に、WebLogic Server サブシステムから生成されるログ メッセージの重大度を最も低いレベルから順に示します。
|
|
|
|
|
|
|
|
WebLogic Server のサブシステムでは、重大度の低いメッセージが数多く生成され、重大度の高いメッセージほど数が少なくなります。たとえば、通常の環境では、INFO
メッセージが多く生成され、EMERGENCY
メッセージは生成されません。
アプリケーションで WebLogic ロギング サービスを使用している場合は、DEBUG
という重大度も使用できます。『アプリケーション ロギングの WebLogic ロギング サービス ユーザーズ ガイド』の「デバッグ メッセージの書き込み」を参照してください。
WebLogic Server Administration Console では、ドメイン内の全ログ ファイルのログ ビューアを利用できます。ログ ビューアでは、日付、サブシステム、重大度、マシン、サーバ、スレッド、ユーザ ID、トランザクション ID、コンテキスト ID、タイムスタンプ、メッセージ ID、またはメッセージのいずれかの属性を基にメッセージを検索および表示できます。また、ロギングされた時点でメッセージを表示することも、過去のログ メッセージを検索することもできます (図 2-3 を参照)。
メッセージ ログの表示、コンフィグレーション、および検索については、Administration Console オンライン ヘルプの以下のトピックを参照してください。
WebLogic Server メッセージ カタログのログ メッセージの詳細については、『WebLogic Server メッセージ カタログ』を参照してください。このメッセージ カタログでは、WebLogic サブシステムによって出力されるすべてのメッセージ、エラー、考えられる原因、およびエラーを回避または修正するための推奨アクションについて説明します。