10.3. ロギングサブシステム設定の概要
JBoss EAP の logging サブシステムは設定に ログカテゴリー および ログハンドラー を使用します。ログカテゴリーはキャプチャーするメッセージを指定し、ログハンドラーはディスクへの書き込みやコンソールへの送信などのメッセージの処理方法を定義します。
アプリケーションのロギングプロファイル を使用すると、メインのロギング設定とは別に、デプロイメントに割り当てることができる一意の名前や、複数のデプロイメントに割り当てることができます。ロギングプロファイルの設定は、メインの logging サブシステムの設定とほぼ同じです。
10.3.1. ルートロガー設定 リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP のルートロガーは、ロガーによってキャプチャーされない指定のログレベル以上ですべてのログメッセージをキャプチャーします。しかし、定義したロガーで use-parent-handlers が true に設定され、ハンドラーも定義されている場合、定義されたロガーとルートロガーの両方がメッセージの処理に使用されます。
デフォルトでは、ルートロガーは、server.log ファイルに書き込むコンソールと Periodic ログハンドラーを使用します。このファイルは一般的にサーバーログとして知られています。
10.3.2. JBoss EAP のログカテゴリー リンクのコピーリンクがクリップボードにコピーされました!
ログカテゴリーは、キャプチャーするログメッセージのセットと、それらのメッセージを処理する 1 つ以上のログハンドラーを定義します。
ログメッセージは指定された送信元およびログレベルによって決定されます。任意の文字列値を指定できます。ただし、パッケージ名またはクラス名が推奨されます。ロガー名は、Logger.getLogger ("example.logger.name") のようにドット表記を使用して指定されます。ログマネージャーは名前の各セクションを処理し、一致する設定をチェックします。find and use-parent-handlers が false に設定されていると、プロセスは停止します。設定が定義されていないか、use-parent-handlers が true に設定されている場合には、ログマネージャーは example.logger などの親名を確認し続けます。ロガー設定は、パッケージまたはクラス名ではなく、ロガーの作成方法によって異なります。
通常、ログカテゴリーは Java パッケージとクラス名に基づいていますが、Logger.getLogger (LOGGER_NAME) メソッドによって指定された名前にすることができます。
ロガーにはハンドラーを割り当てることができます。use-parent-handlers が false に設定されている場合、ロガーによってログ可能なと判断された場合でも、上位レベルのロガーはメッセージを処理しません。たとえば、ロガー名が org.jboss.as.logging で、use-parent-handlers=false で設定されている場合、org.jboss.as ロガーはチェックされません。
10.3.3. JBoss EAP のログハンドラー リンクのコピーリンクがクリップボードにコピーされました!
ログハンドラーは、エントリーの宛先および形式を指定して、キャプチャーされたログメッセージの記録方法を定義します。ログハンドラーのタイプを理解することは、さまざまなニーズに合わせた個別の目的に対応するため、効果的なロギング設定のために不可欠です。
ログハンドラーは、少なくとも 1 つのロガーに追加してアクティブにする必要があります。
10.3.3.1. ログハンドラーの種類 リンクのコピーリンクがクリップボードにコピーされました!
ログハンドラーは、ログエントリーの処理および保存方法を決定するいくつかのタイプに分類されます。それぞれのタイプには、さまざまなロギング要件を満たすための個別の機能があります。
-
コンソール: ホストオペレーティングシステムの標準出力(
stdout)または標準エラー(stderr)ストリームのいずれかにログメッセージを書き込みます。これらのメッセージは、JBoss EAP がコマンドラインプロンプトから実行されると表示されます。オペレーティングシステムで標準出力または標準エラーストリームをキャプチャーするように設定されていない限り、Console ログハンドラーからのメッセージは保存されません。 - File: ログメッセージを指定されたファイルに書き込みます。
- 定期的: 指定された時間が経過するまで、ログメッセージを名前付きファイルに書き込みます。その後、ファイルの名前はタイムスタンプで変更され、ハンドラーは元の名前で新しい作成されたログファイルに書き込みを継続します。
- サイズ: ファイルが指定されたサイズに達するまで、ログメッセージを名前付きファイルに書き込みます。ファイルがそのサイズに達すると、数値の接尾辞が付いて名前が変更され、ハンドラーは元の名前で新規作成されたログファイルに書き込みを継続します。各サイズログハンドラーは、このような方法で保持するファイルの最大数を指定する必要があります。
- Periodic Size: ファイルが指定されたサイズに達するか、指定の期間の有効期限が切れるまで、ログメッセージを名前付きファイルに書き込みます。その後、ハンドラーはファイルの名前を変更し、新規作成されたログファイルに元の名前で書き込みを継続します。このハンドラーは、Periodic ログハンドラーと Size ログハンドラーの両方の機能を組み合わせたものです。
- syslog: リモートロギングサーバーにメッセージを送信します。これにより、複数のアプリケーションが同じサーバーにログメッセージを送信して解析を行うことができます。
- socket: ソケットでログメッセージをリモートロギングサーバーに送信します。これは、TCP ソケットまたは UDP ソケットのいずれかを使用できます。
-
Custom: 新しいタイプのログハンドラーを設定できます。カスタムハンドラーは、
java.util.logging.Handlerを拡張し、モジュールに含める Java クラスとして実装する必要があります。Log4J アペンダーをカスタムログハンドラーとして使用することもできます。 - async: 1 つ以上の他のログハンドラーの非同期動作を提供します。これは、ネットワークファイルシステムへのログファイルの書き込みなど、長い遅延やパフォーマンスの問題があるログハンドラーに役立ちます。
10.3.4. JBoss EAP でサポートされるログレベル リンクのコピーリンクがクリップボードにコピーされました!
ログレベルとは、ログメッセージの性質と重大度を示す列挙値です。開発者は、このメッセージを送信するために選択したロギングフレームワークの適切なメソッドを使用してログメッセージのレベルを指定できます。
JBoss EAP は、サポートされるアプリケーションロギングフレームワークによって使用されるすべてのログレベルをサポートします。最も一般的に使用されるログレベルは、ログレベルの低い順に TRACE、DEBUG、INFO、WARN、ERROR および FATAL となります。
ログレベルは、ログカテゴリーとハンドラーが処理するメッセージを制限するのに役立ちます。各ログレベルには、他のログレベルに対して相対的な順番を示す数値が割り当てられています。ログカテゴリーとハンドラーにはログレベルが割り当てられ、そのレベル以上のログメッセージのみを処理します。たとえば、WARN レベルのログハンドラーは、 、WARN ERROR、および FATAL にメッセージを記録します。
| ログのレベル | Value | 説明 |
|---|---|---|
| ALL | Integer.MIN_VALUE | すべてのログメッセージを提供します。 |
| FINEST | 300 | - |
| FINER | 400 | - |
| TRACE | 400 |
|
| DEBUG | 500 |
|
| FINE | 500 | - |
| CONFIG | 700 | - |
| INFO | 800 |
|
| WARN | 900 |
|
| WARNING | 900 | - |
| ERROR | 1000 |
|
| SEVERE | 1000 | - |
| FATAL | 1100 |
|
| OFF | Integer.MAX_VALUE | ログメッセージを表示しません。 |
ALL は、最低ログレベルであり、すべてのログレベルのメッセージを含みます。ロギングの量は最も多くなります。
FATAL は、最大ログレベルであり、そのレベルのメッセージのみを含みます。ロギングの量は最も少なくなります。
10.3.5. JBoss EAP のログフォーマッター リンクのコピーリンクがクリップボードにコピーされました!
ログフォーマッターはログメッセージのフォーマットに使用されます。named-formatter 属性を使用するとフォーマッターをログハンドラーに割り当てることができます。
10.3.5.1. ログフォーマッターのタイプ リンクのコピーリンクがクリップボードにコピーされました!
ログエントリーがフォーマットされる方法を決定する複数のタイプに分類されたログフォーマッター。
logging サブシステムには 4 種類のフォーマッターが含まれます。
-
Pattern formatter: ログメッセージをプレーンテキストでフォーマットします。ログハンドラーの
named-formatter属性としてフォーマッターを使用する他に、最初にフォーマッターリソースを作成せずにformatter属性として使用することもできます。 - JSON formatter: ログメッセージを JSON 形式でフォーマットします。
- XML formatter: ログメッセージを XML 形式でフォーマットします。
-
Custom formatter: ハンドラーで使用されます。ほとんどのログレコードは printf 形式でフォーマットされます。フォーマッターは、適切なフォーマットのために
org.jboss.logmanager.ExtLogRecord#getFormattedMessage ()の呼び出しが必要になる場合があります。
10.3.6. JBoss EAP でのロギング用のフィルター式 リンクのコピーリンクがクリップボードにコピーされました!
フィルター式。filter-spec 属性を使用して設定され、さまざまな基準に基づいてログメッセージを記録します。フィルターは、未フォーマットの raw メッセージに適用されます。フィルターはロガーまたはハンドラーに追加できますが、ハンドラーに配置されたフィルターよりもロガーフィルターが優先されます。
ルートロガーに対して指定された filter-spec は他のロガーによって継承されません。ハンドラーごとに filter-spec を指定する必要があります。
以下の表は、ロギングに使用できるフィルター式について説明しています。
| フィルター式 | 説明 |
|---|---|
| accept | すべてのログメッセージを許可します。 |
| deny | すべてのログメッセージを拒否します。 |
| not[filter expression] | 単一のフィルター式の逆の値を返します。以下に例を示します。
|
| all[filter expression] | フィルター式のコンマ区切りリストから連結された値を返します。以下に例を示します。
|
| any[filter expression] | フィルター式のコンマ区切りリストから 1 つの値を返します。以下に例を示します。
|
| levelChange[level] | 指定のレベルでログレコードを更新します。以下に例を示します。
|
| levels[levels] | レベルのコンマ区切りリストにあるレベルの 1 つでログメッセージをフィルターします。以下に例を示します。
|
| levelRange[minLevel,maxLevel] |
指定されたレベル範囲内でログメッセージをフィルターします。
|
| match["pattern"] | 提供される正規表現を使用してログメッセージをフィルターします。以下に例を示します。
|
| substitute["pattern","replacement value"] | 最初の一致とパターン(最初の引数)を代替テキスト(2 番目の引数)に置き換えます。以下に例を示します。
|
| substituteAll["pattern","replacement value"] | パターン(最初の引数)と一致したすべての値を代替テキスト(2 番目の引数)に置き換えます。以下に例を示します。
|
管理 CLI を使用してフィルター式を設定する場合、フィルターテキストのコンマと引用符をエスケープして、値が文字列として正しく処理されるようにします。コンマと引用符の前にバックスラッシュ (\) を付け、式全体を引用符で囲む必要があります。以下は substituteAll("WFLY","YLFW") を適切にエスケープした例になります。
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=filter-spec, value="substituteAll(\"WFLY\"\,\"YLFW\")")
10.3.7. JBoss EAP の暗黙的なロギングの依存関係 リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP の logging サブシステムはデフォルトで暗黙的なロギング API 依存関係をデプロイメントに追加します。add-logging-api-dependencies 属性を使用して、これらの暗黙的な依存関係をデプロイメントに追加するかどうかを管理できます。これは、デフォルトで true に設定されています。
これらの依存関係が追加されないようにするには、管理 CLI を使用して add-logging-api-dependencies 属性を false に設定します。
/subsystem=logging:write-attribute(name=add-logging-api-dependencies, value=false)