Show Table of Contents
第14章 ロギングサブシステム
14.1. はじめに
14.1.1. ロギングの概要
JBoss EAP 6 は、独自の内部使用とデプロイされたアプリケーションによる使用のために設定可能な高度なロギング機能を提供します。ロギングサブシステムは JBoss LogManager を基盤とし、JBoss Logging 以外にも複数のサードパーティーアプリケーションのロギングフレームワークをサポートします。
ロギングサブシステムは、ログカテゴリーとログハンドラーのシステムを使用して設定されます。ログカテゴリーはキャプチャーするメッセージを定義し、ログハンドラーはこれらのメッセージの処理方法を定義します (ディスクへの書き込みやコンソールへの送信など)。
ロギングプロファイルは、一意に名前が付けられたロギング設定のセットを作成し、他のロギング設定に依存しないアプリケーションへ割り当てることが可能です。ロギングプロファイルの設定はメインのロギングサブシステムとほぼ同じです。
14.1.2. JBoss LogManager でサポートされるアプリケーションロギングフレームワーク
JBoss LogManager は次のロギングフレームワークをサポートします。
- JBoss Logging - JBoss EAP 6 に含まれます
- Apache Commons Logging - http://commons.apache.org/logging/
- Simple Logging Facade for Java (SLF4J) - http://www.slf4j.org/
- Apache log4j - http://logging.apache.org/log4j/1.2/
- Java SE Logging (java.util.logging) - http://download.oracle.com/javase/6/docs/api/java/util/logging/package-summary.html
14.1.3. ブートロギングの設定
ブートロギングは、サーバーの「ブート中」 (起動中) に発生したイベントの記録です。
サーバー起動時に
logging.properties ファイルが使用できる場合、これらのプロパティー設定はロギングサブシステムが初期化される前に発生したイベントを記録するために使用されます。この時点で、ロギングサブシステムがイベントの記録を引き継ぎます。
管理 CLI を使用するか、サーバー設定ファイルを手作業で編集して
logging サブシステムを編集すると、logging.properties ファイルが更新されます。
インストールに
logging.properties ファイルがない場合、ロギングサブシステムが初期化される前のブート中に通常表示されるログメッセージは失われます。ロギングシステムが初期化されると、メッセージが再度ログに表示されます。
警告
サーバーのブートに深刻な問題があり、ホストまたはプロセスコントローラーから追加のロギングが必要な場合のみ
logging.properties ファイルを直接編集することが推奨されます。
14.1.4. ガベッジコレクションロギング
ガベッジコレクションロギングは、すべてのガベッジコレクションのアクティビティーをプレーンテキストのログファイルに記録します。これらのログファイルは分析を行うのに便利です。JBoss EAP 6.3 より、ガベッジコレクションロギングは IBMJDK を除くサポートされる設定の
standalone モードでデフォルトで有効になっています。
ロギングはファイル
$EAP_HOME/standalone/log/gc.log.digit へ出力されます。ログロテーションは有効になっており、ログファイルの数は 5 つに制限されています。また、各ログファイルの最大サイズは 3 MiB に制限されています。
14.1.5. 暗黙的なロギング API の依存関係
JBoss EAP 6 のロギングサブシステムには、コンテナが暗黙的なロギング API 依存関係をデプロイメントに追加するかどうかを制御する
add-logging-api-dependencies 属性が含まれています。デフォルトでは、この属性は true に設定され、暗黙的なロギング API 依存関係はすべてデプロイメントへ追加されます。false に設定すると、暗黙的なロギング API 依存関係は追加されません。
管理 CLI を使用して
add-logging-api-dependencies 属性を設定できます。例は次のとおりです。
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)14.1.6. デフォルトのログファイルの場所
これらは、デフォルトのロギング設定に対して作成されたログファイルです。デフォルトの設定では、周期的なログハンドラーを使用してサーバーログファイルが書き込まれます。
表14.1 スタンドアロンサーバーのデフォルトログファイル
| ログファイル | 説明 |
|---|---|
EAP_HOME/standalone/log/server.log |
サーバーログ。サーバー起動メッセージなど、すべてのサーバーログメッセージが含まれます。
|
EAP_HOME/standalone/log/gc.log |
ガベッジコレクションのログ。ガベッジコレクションすべての詳細が含まれます。
|
表14.2 管理対象ドメイン用のデフォルトログファイル
| ログファイル | 説明 |
|---|---|
EAP_HOME/domain/log/host-controller.log |
ホストコントローラーのブートログ。ホストコントローラーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/domain/log/process-controller.log |
プロセスコントローラーのブートログ。プロセスコントローラーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/domain/servers/SERVERNAME/log/server.log |
名前付きサーバーのサーバーログ。サーバー起動メッセージなど、そのサーバーのすべてのログメッセージが含まれます。
|
14.1.7. ロギングのフィルター式
注記
ルートロガーに対して指定された
filter-spec は他のハンドラーによって継承されません。ハンドラーごとに filter-spec を指定する必要があります。
表14.3 ロギングのフィルター式
|
フィルタータイプ
expression
| 説明 | パラメーター |
|---|---|---|
|
Accept
accept
| すべてのログメッセージを許可します。 | accept
|
|
Deny
deny
| すべてのログメッセージを拒否します。 | deny
|
|
Not
not[filter expression]
| フィルター式の逆の値を返します。 |
1 つのフィルター式をパラメーターとして取ります。
not(match("JBAS"))
|
|
All
all[filter expression]
| 複数のフィルター式より連結された値を返します。 |
コンマ区切りの複数のフィルター式を取ります。
all(match("JBAS"),match("WELD"))
|
|
Any
any[filter expression]
| 複数のフィルター式より 1 つの値を返します。 |
コンマ区切りの複数のフィルター式を取ります。
any(match("JBAS"),match("WELD"))
|
|
Level Change
levelChange[level]
| 指定のレベルでログレコードを変更します。 |
1 つの文字列ベースのレベルを引数として取ります。
levelChange("WARN")
|
|
Levels
levels[levels]
| レベルリストにあるレベルの 1 つでログメッセージをフィルターします。 |
コンマで区切られた複数の文字列ベースのレベルを取ります。
levels("DEBUG","INFO","WARN","ERROR")
|
|
Level Range
levelRange[minLevel,maxLevel]
| 指定のレベル範囲内でログメッセージをフィルターします。 |
フィルター式では、
[ を使用して含まれる最小レベルが示され、] を使用して含まれる最大レベルが示されます。この代わりに、それぞれ ( または ) を使用して含まれるレベルを示すことが可能です。式の最初の引数が許可される最小レベルで、2 つ目の引数が許可される最大レベルになります。
以下に例を示します。
|
Match (match["pattern"]) | 正規表現ベースのフィルター。式に指定されたパターンに対してフォーマットされていないメッセージが使用されます。 |
正規表現を引数として取ります。
match("JBAS\d+")
|
Substitute (substitute["pattern","replacement value"]) | 最初にパターンと一致した値を指定の値に置き換えるフィルター。 |
式の最初の引数はパターンで、2 つ目の引数は置き換えるテキストです。
substitute("JBAS","EAP")
|
Substitute All (substituteAll["pattern","replacement value"]) | パターンと一致したすべての値を指定の値に置き換えるフィルター。 |
式の最初の引数はパターンで、2 つ目の引数は置き換えるテキストです。
substituteAll("JBAS","EAP")
|
14.1.8. ログレベル
ログレベルとは、ログメッセージの性質と重大度を示す列挙値の順序付けされたセットです。特定のログメッセージのレベルは、そのメッセージを送信するために選択したロギングフレームワークの適切なメソッドを使用して開発者が指定します。
JBoss EAP 6 は、サポートされるアプリケーションロギングフレームワークによって使用されるすべてのログレベルをサポートします。最も一般的に使用される 6 つのログレベルは、ログレベルの低い順に
TRACE、DEBUG、INFO、WARN、ERROR および FATAL となります。
ログレベルはログカテゴリとログハンドラーによって使用され、それらが担当するメッセージを限定します。各ログレベルには、他のログレベルに対して相対的な順番を示す数値が割り当てられています。ログカテゴリーとハンドラーにはログレベルが割り当てられ、そのレベル以上のログメッセージのみを処理します。たとえば、
WARN レベルのログハンドラーは、WARN、ERROR、および FATAL のレベルのメッセージのみを記録します。
14.1.9. サポート対象のログレベル
表14.4 サポート対象のログレベル
| ログレベル | 値 | 説明 |
|---|---|---|
| FINEST | 300 |
-
|
| FINER | 400 |
-
|
| TRACE | 400 |
アプリケーションの実行状態に関する詳細情報を提供するメッセージに使用します。通常、
TRACE のログメッセージはアプリケーションのデバッグ時のみにキャプチャーされます。
|
| DEBUG | 500 |
アプリケーションの個別の要求または活動の進捗状況を表示するメッセージに使用します。
DEBUG のログメッセージは通常アプリケーションのデバッグ時のみにキャプチャーされます。
|
| FINE | 500 |
-
|
| CONFIG | 700 |
-
|
| INFO | 800 |
アプリケーションの全体的な進捗状況を示すメッセージに使用します。多くの場合、アプリケーションの起動、シャットダウン、およびその他の主要なライフサイクルイベントに使用されます。
|
| WARN | 900 |
エラーではないが、理想的とは見なされない状況を示すために使用されます。将来的にエラーをもたらす可能性のある状況を示します。
|
| WARNING | 900 |
-
|
| ERROR | 1000 |
発生したエラーの中で、現在の活動や要求の完了を妨げる可能性があるが、アプリケーション実行の妨げにはならないエラーを表示するために使用されます。
|
| SEVERE | 1000 |
-
|
| FATAL | 1100 |
クリティカルなサービス障害やアプリケーションのシャットダウンをもたらしたり、JBoss EAP 6 のシャットダウンを引き起こす可能性があるイベントを表示するのに使用されます。
|
14.1.10. ログカテゴリー
ログカテゴリーは、キャプチャーするログメッセージのセットと、メッセージを処理する 1 つまたは複数のログハンドラーを定義します。
キャプチャーするログメッセージは、元の Java パッケージとログレベルによって定義されます。そのパッケージ内のクラスおよびそのログレベル以下のメッセージがログカテゴリによってキャプチャーされ、指定のログハンドラーに送信されます。
ログカテゴリーは、独自のハンドラーの代わりにルートロガーのログハンドラーを任意で使用することができます。
14.1.11. ルートロガーについて
ルートロガーは、サーバーに送信された (指定レベルの) ログメッセージの中でログカテゴリーによってキャプチャーされないすべてのログメッセージをキャプチャーします。これらのメッセージは単一または複数のハンドラーに送信されます。
デフォルトでは、ルートロガーはコンソールおよび定期ログハンドラーを使用するように設定されています。定期ログハンドラーは、
server.log ファイルに書き込むように設定されています。このファイルはサーバーログと呼ばれる場合もあります。
14.1.12. ログハンドラー
ログハンドラーはキャプチャーされたメッセージが JBoss EAP 6 によって記録される方法を定義します。設定可能なログハンドラーは
Console、File、Periodic、Size、Async および Custom の 6 種類です。
14.1.13. ログハンドラーのタイプ
- コンソール (Console)
- コンソールログハンドラーは、ログメッセージをホストオペレーティングシステムの標準出力 (stdout) または標準エラー (stderr) ストリームに書き込みます。これらのメッセージは、JBoss EAP 6 がコマンドラインプロンプトから実行された場合に表示されます。オペレーティングシステムで標準出力または標準エラーストリームをキャプチャーするように設定されていない限りは、コンソールログハンドラーからのメッセージは保存されません。
- ファイル (File)
- ファイルログハンドラーは、ログメッセージを指定のファイルに書き込む、最もシンプルなログハンドラーです。
- 定期 (Periodic)
- 定期ログハンドラーは、指定した時間が経過するまで、ログメッセージを指定ファイルに書き込みます。その時間が経過した後には、指定のタイムスタンプが追記されてファイルの名前が変更され、 ハンドラーは元の名前で新規作成されたログファイルに書き込みを継続します。
- サイズ (Size)
- サイズログハンドラーは、指定のファイルが指定サイズに到達するまで、そのファイルにログメッセージを書き込みます。ファイルが指定したサイズに到達すると、名前に数値の接頭辞を追加して名前変更され、ハンドラーは元の名前で新規作成されたログファイルに書き込みを継続します。各サイズログハンドラーは、このような方式で保管されるファイルの最大数を指定する必要があります。
- 非同期 (Async)
- 非同期ログハンドラーは、 単一または複数のログハンドラーを対象とする非同期動作を提供するラッパーログハンドラーです。非同期ログハンドラーは高レイテンシのログハンドラーや、パフォーマンス上の問題があるログハンドラー (ネットワークファイルシステムへのログファイル書き込みなど) に有用です。
- カスタム (Custom)
- カスタムログハンドラーにより、実装された新たなタイプのログハンドラーを設定することができます。カスタムハンドラーは、
java.util.logging.Handlerを拡張する Java クラスとして実装し、モジュール内に格納する必要があります。 - syslog
- syslog-handler は、リモートのロギングサーバーへメッセージを送信するために使用できます。これにより、複数のアプリケーションが同じサーバーにログメッセージを送信でき、そのサーバーですべてのログメッセージを解析できます。
14.1.14. ログフォーマッター
ログフォーマッターは、ログハンドラーの設定プロパティーで、そのハンドラーからのログメッセージの表示を定義します。
java.util.Formatter クラスを基にした構文を使用する文字列です。
たとえば、デフォルト設定のログフォーマッター文字列
%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n は次のようなログメッセージを作成します。
15:53:26,546 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
14.1.15. ログフォーマッター構文
表14.5 ログフォーマッター構文
| 記号 | 説明 |
|---|---|
%c | ロギングイベントのカテゴリー |
%p | ログエントリーのレベル (情報やデバッグなど) |
%P | ログエントリーのローカライズレベル |
%d | 現在の日付/時刻 (yyyy-MM-dd HH:mm:ss,SSS 形式) |
%r | 相対時間 (ログが初期化された以降のミリ秒単位の時間) |
%z | タイムゾーン |
%k | ログリソースキー (ログメッセージのローカリゼーションに使用) |
%m | ログメッセージ (例外トレースを除外) |
%s | 単純なログメッセージ (例外トレースなし) |
%e | 例外スタックトレース (拡張モジュール情報なし) |
%E | 例外スタックトレース (拡張モジュール情報あり) |
%t | 現在のスレッドの名前 |
%n | 改行文字 |
%C | ログメソッドを呼び出すコードのクラス (低速) |
%F | ログメソッドを呼び出すクラスのファイル名 (低速) |
%l | ログメソッドを呼び出すコードのソースロケーション (低速) |
%L | ログメソッドを呼び出すコードの行番号 (低速) |
%M | ログメソッドを呼び出すコードのメソッド (低速) |
%x | ネスト化診断コンテキスト |
%X | メッセージ診断コンテキスト |
%% | リテラルパーセント記号 (エスケープ) |

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.