Sun GlassFish Enterprise Server v3 管理ガイド

第 7 章 ロギングサービスの管理

この章では、Sun GlassFishTM Enterprise Server v3 環境で、ロギングを設定する手順とログ情報を表示する手順について説明します。

ここでは、次のテーマを取り上げます。

これらのタスクの実行とプロパティーの編集を 管理コンソール を使用して行う場合の手順は、管理コンソール のオンラインヘルプで説明します。

ロギングについて

「ロギング」は、構成エラー、セキュリティー障害、サーバーの不完全な動作といったサーバーの動作中に発生したイベントに関する情報を、Enterprise Server が取得するための処理です。このデータはログファイルに記録され、通常は問題が発生したときの主要な情報源となります。ログファイルの解析は、サーバーの健全性を判断する際に役立ちます。

アプリケーションコンポーネントでは Apache Commons Logging Library を使用してメッセージを記録することもできますが、より適切なログ構成を行うには、プラットフォーム標準の JSR 047 API をお勧めします。

ここでは、次のテーマを取り上げます。

ログファイル

Enterprise Server のログレコードはサーバーログに記録されます。デフォルトのサーバーログの名前は server.log で、通常は domain-dir/logs に保存されます。サーバーログのデフォルトの名前または場所は、管理コンソール を使用して変更できます。

サーバーログのほかに、domain-dir/logs ディレクトリには次のログも保存されます。

サーバーログのサイズが指定された値 (バイト単位) に達すると、ログはローテーションされ、タイムスタンプを付加した server.log_ date という名前に変更されます。date は、ファイルがローテーションされた日時を表します。ログファイルのローテーションは、「サーバーログのローテーション」の手順に従って手動で行うこともできます。

Enterprise Server のログレコードは、次の統一形式に従います。




[#|yyyy-mm-ddThh:mm:ss.SSS-Z|Log Level|ProductName-Version|LoggerName|Key Value Pairs|Message|#]

ログレコードの例を次に示します。

[#|2006-10-21T13:25:53.852-0400|INFO|GlassFish10.0|javax.enterprise.
system.core|_ThreadID=13;|CORE5004: Resource Deployed: 
[cr:jms/DurableConnectionFactory].|#]

管理コンソール では、ログレコードがわかりやすい形式で表示されます。

ロガー名前空間

list-logger-levels(1) サブコマンドを使用して、モジュールの既存のロガーを一覧表示できます。次に例を示します。


javax.enterprise.system.container.cmp: INFO
javax.enterprise.system.tools.admin: INFO
javax.enterprise.system.container.web: INFO
javax.enterprise.system.util: INFO
javax.enterprise.resource.webcontainer.jsf.timing: INFO
javax: INFO
javax.enterprise.resource.corba: INFO
javax.enterprise.system.core.naming: INFO
javax.enterprise.system.core.selfmanagement: INFO
javax.enterprise.system.container.ejb: INFO
javax.enterprise.resource.webcontainer.jsf.config: INFO
javax.enterprise.resource.javamail: INFO
org.apache.catalina: INFO
javax.enterprise.system.core.config: INFO
javax.enterprise.system.webservices.rpc: INFO
javax.enterprise.system.webservices.registry: INFO
javax.enterprise.system.tools.deployment: INFO
javax.enterprise.resource.jms: INFO
javax.enterprise.system: INFO
javax.enterprise.system.webservices.saaj: INFO
org.apache.jasper: INFO
javax.enterprise.resource.webcontainer.jsf.lifecycle: INFO
javax.enterprise.resource.jta: INFO
javax.enterprise.resource.jdo: INFO
javax.enterprise.resource.resourceadapter: INFO
javax.enterprise.system.core.transaction: INFO
javax.enterprise.resource.webcontainer.jsf.resource: INFO
javax.enterprise.system.core.security: INFO
javax.enterprise.resource.webcontainer.jsf.application: INFO
javax.enterprise.system.core.classloading: INFO
org.apache.coyote: INFO
javax.enterprise.resource.webcontainer.jsf.managedbean: INFO
javax.enterprise.system.container.ejb.mdb: INFO
javax.enterprise.resource.webcontainer.jsf.context: INFO
javax.enterprise.resource.webcontainer.jsf.renderkit: INFO
javax.enterprise.resource.webcontainer.jsf.facelets: INFO
javax.enterprise.resource.webcontainer.jsf.taglib: INFO

ログレベルの設定

「ログレベル」は、ログに記録するメッセージの粒度を決定します。ここには、エラーのみ (SEVERE) から詳細なデバッグ情報 (FINEST) までのいずれかを指定します。選択できる値は、SEVEREWARNINGINFOCONFIGFINEFINER、および FINEST です。各ログレベルは上位のレベルを含みます。つまり、特定のログレベル (たとえば、INFO) を設定した場合、これより上位のログレベル (SEVERE および WARNING) のメッセージも記録されます。もっとも低いログレベル (FINEST) に設定した場合、出力にはファイルのすべてのメッセージが含まれます。デフォルト設定は、INFO です。

ログレベルの設定には、グローバル設定とロガー固有の設定の 2 つを利用できます。ロガー固有の設定を選択し、この設定がグローバル設定と異なる場合は、ロガー固有の設定が優先されます。

グローバルログレベルを設定するには、logging.properties ファイルを編集します。モジュールごとのログレベルは、この節で説明するように asadmin サブコマンドを使用して設定します。

ログレベルの設定

ログレベルの設定は動的な処理であるため、変更を有効にするために Enterprise Server を再起動する必要はありません。

ここでは、次のテーマを取り上げます。

Procedureロガーレベルを一覧表示する

モジュールと各モジュールの現在のログレベルを一覧表示するには、リモートモードで list-logger-levels サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-logger-levels(1) サブコマンドを使用して、既存のモジュールのロガーを一覧表示します。


例 7–1 モジュールのロガーレベルの一覧表示

この例では、既存のロガーの一部と、各ロガーで設定されているログレベルを一覧表示します。


asadmin> list-logger-levels
javax.enterprise.system.container.cmp: INFO
javax.enterprise.system.tools.admin: INFO
java.util.logging.ConsoleHandler: FINEST
javax.enterprise.system.container.web: INFO
javax.enterprise.system.util: INFO
javax.enterprise.resource.webcontainer.jsf.timing: INFO
javax: INFO
javax.enterprise.resource.corba: INFO
...
Command list-logger-levels executed successfully.

参照

コマンド行に asadmin help list-logger-levels と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedureグローバルログレベルを設定する

「グローバルログレベル」は、すべてのロガーで記録されるイベントの種類を指定します。コンソールへのメッセージ出力のデフォルトレベルは INFO です。このレベルには、SEVEREWARNING のメッセージも含まれます。

グローバルロギングは、logging.properties ファイルを編集して設定します。デフォルトの logging.properties ファイルは、domain.xml ファイルと同じディレクトリにあり、通常は domain-dir/config に保存されています。java.util.logging.config.file システムプロパティーにファイル名を指定して、別のファイルを選択することもできます。たとえば、次のように指定します。


java -Djava.util.logging.config.file=myfile

ConsoleHandler には、表示されるメッセージを制限する独立したログレベル設定があります。次に例を示します。


java.util.logging.ConsoleHandler.level = INFO 
java.util.logging.ConsoleHandler.formatter = 
com.sun.enterprise.server.logging.UniformLogFormatter
  1. テキストエディタで、ConsoleHandler のログレベルを設定している行を検索して変更を行います。

  2. ファイルを保存します。


例 7–2 すべてのロガーを対象とするグローバルログレベルの変更

ログレベルをルートレベルで設定すると、すべてのロガーのレベルを設定できます。この例では、すべてのロガーのログレベルを INFO に設定します。

.level= INFO

Procedureモジュールのロガーレベルを設定する

「モジュールログレベル」は、特定のロガーで記録するイベントの種類を指定します。コンソールへのメッセージ出力のデフォルトレベルは INFO です。このレベルには、SEVEREWARNING のメッセージも含まれます。グローバルログレベルは、モジュールに固有のログレベルで上書きされます。

デフォルトでは、モジュールログレベルは FINE に設定されます。ロガーを設定する行は次のようになります。太字はモジュールを示しています。


#javax.enterprise.system.tools.level=FINE
#javax.enterprise.system.container.ejb.level=FINE
#javax.enterprise.system.core.security.level=FINE
#javax.enterprise.system.tools.admin.level=FINE
#javax.enterprise.level=FINE
#javax.enterprise.system.container.web.level=FINE

ログレベルの設定は動的な処理であるため、変更を有効にするために Enterprise Server を再起動する必要はありません。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-logger-levels(1) サブコマンドを使用して、既存のモジュールのロガーを一覧表示します。

  3. set-log-level(1) サブコマンドを使用して、モジュールのログレベルを設定します。

    選択できる値は、SEVEREWARNINGINFOCONFIGFINEFINER、および FINEST です。


例 7–3 モジュールロガーのログレベルの設定

この例では、Web コンテナロガーのログレベルを FINE に設定します。


asadmin> set-log-level javax.enterprise.system.container.web.level=FINE
Command set-log-level executed successfully.


例 7–4 複数のロガーのログレベルの設定

この例では、セキュリティーロガーと Web コンテナロガーのログレベルを設定します。


asadmin> set-log-level javax.enterprise.system.core.security.level=FINE
javax.enterprise.system.container.web=WARNING 
Command set-log-level executed successfully.

参照

コマンド行に asadmin help set-log-level と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

サーバーログのローテーション

ログは logging.properties ファイルの設定に従って自動的にローテーションされます。これらの設定は 管理コンソール を使用して変更できます。

Procedureログファイルを手動でローテーションする

サーバーログファイルを手動でローテーションするには、リモートモードで rotate-log サブコマンドを使用します。デフォルトの場所にあるサーバーログは、ただちにタイムスタンプ付きの名前に変更され、新しいサーバーログが作成されます。

ログのローテーションは動的な処理であるため、変更を有効にするために Enterprise Server を再起動する必要はありません。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. rotate-log(1) サブコマンドを使用して、ログをローテーションします。


例 7–5 手動によるログファイルのローテーション

この例では、server.log ファイルの名前を yyyy-mm-dd_server.log に変更し、デフォルトの場所に新しい server.log ファイルを作成します。


asadmin> rotate-log
Command rotate-log executed successfuly.

参照

コマンド行に asadmin help rotate-log と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ログ情報の表示

デフォルトでは、すべてのロギング情報は server.log ファイルに記録されます。このファイルは、通常 domain-dir /logs に保存されます。ロギング情報は、管理コンソール のログビューアを使用して表示できます。管理コンソール のロギング機能を使用する手順は、管理コンソール のオンラインヘルプで説明します。

特定のモジュールで収集された情報を表示するには、server.log ファイルをテキストエディタで開き、対象のモジュールを検索します。