10.8. JBoss EAP におけるアプリケーションロギングの設定
アプリケーションのロギングは、JBoss EAP logging サブシステムを使用するか、per-deployment ベースで設定できます。logging サブシステムにより管理を一元化でき、per-deployment ロギングにより各アプリケーションに固有のカスタム設定が可能になります。
10.8.1. per-deployment ロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
per-deployment ロギングを使用することで、開発者はアプリケーションのロギングを事前に設定できます。アプリケーションがデプロイされると、定義された設定に従ってロギングが開始されます。この設定によって生成されたログファイルにはアプリケーションの動作に関する情報のみが含まれます。
per-deployment ロギングを使用する場合、アプリケーションは logging サブシステムの設定を使用しません。代わりに、アプリケーションのデプロイメントファイル内で定義されたロギング設定を使用します。各アプリケーションは、グローバル設定とは別に、カスタムログ設定を持つことができます。
システム全体のロギングと比較して、このアプローチには利点と欠点があります。利点としては、JBoss EAP 管理者がサーバーロギング以外のロギングを設定する必要がないことが挙げられます。欠点は、per-deployment ロギング設定はサーバー起動時にのみ読み取られ、実行時に変更できないことです。
10.8.1.1. per-deployment ロギングの無効化 リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP で per-deployment ロギングを無効にするには、use-deployment-logging-config 属性を設定するか、logging サブシステムを除外します。
前提条件
- JBoss EAP が実行している。
次のいずれかの方法を使用して、per-deployment ロギングを無効にします。
手順
use-deployment-logging-config属性をfalseに設定します。/subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)use-deployment-logging-config属性は、デプロイメントがデプロイメントごとにロギングに対してスキャンされるかどうかを制御します。デフォルトはtrueです。per-deployment ロギングを無効にするには、これをfalseに設定します。-
jboss-deployment-structure.xmlファイルを使用してloggingサブシステムを除外します。
10.8.2. アプリケーションロギングプロファイル リンクのコピーリンクがクリップボードにコピーされました!
ロギングプロファイルは、デプロイされたアプリケーションに割り当てることができる独立したロギング設定のセットです。通常の logging サブシステムと同様に、ロギングプロファイルでは、ハンドラー、カテゴリー、フォーマッター、およびルートロガーを定義できます。ただし、他のプロファイルまたはメインの logging サブシステムの設定を参照することはできません。設定を容易にするために、ロギングプロファイルの設計は logging サブシステムに類似しています。
ロギングプロファイルを使用すると、管理者は他の設定に影響を与えることなく、1 つ以上のアプリケーションに固有のロギング設定を作成できます。各プロファイルはサーバー設定で定義されるため、ロギング設定を変更しても、影響を受けるアプリケーションを再デプロイする必要はありません。
各ロギングプロファイルには以下の項目を設定できます。
- 一意な名前。この値は必須です。
- 任意の数のログハンドラー。
- 任意の数のログカテゴリー。
- 最大 1 つのルートロガー。
- ログフォーマッター。
アプリケーションでは、Logging-Profile を設定することで、MANIFEST.MF ファイルで使用するロギングプロファイルを指定できます。
10.8.2.1. ロギングプロファイルの設定 リンクのコピーリンクがクリップボードにコピーされました!
ログハンドラー、カテゴリー、ルートロガーを使用してロギングプロファイルを設定できます。ロギングプロファイルの設定には、logging サブシステムの設定と同じ構文を使用しますが、以下の点が異なります。
-
ルート設定パスが
/subsystem=logging/logging-profile=NAMEになります。 - ロギングプロファイルに他のロギングプロファイルを追加できません。
loggingサブシステムには、ロギングプロファイルでは使用できない以下の属性が含まれています。-
add-logging-api-dependencies -
use-deployment-logging-config
-
管理 CLI を使用して、JBoss EAP のロギングプロファイルを設定できます。または、管理コンソールから Configuration > Subsystems > Logging > Logging Profiles に移動して設定することもできます。
前提条件
- JBoss EAP が実行している。
手順
次のコマンドを使用して、ロギングプロファイルを作成します。
/subsystem=logging/logging-profile=PROFILE_NAME:add次のコマンドを使用して、ファイルハンドラーを追加します。
/subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:add(file={path=>"LOG_NAME.log", "relative-to"=>"jboss.server.log.dir"})次のコマンドを使用して、ファイルハンドラーのロギングレベルを設定します。
/subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:write-attribute(name="level", value="DEBUG")次のコマンドを使用して、ロガー名を作成します。
/subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add(level=TRACE)次のコマンドを使用して、ファイルハンドラーをカテゴリーに割り当てます。
/subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add-handler(name="FILE_HANDLER_NAME")この後、アプリケーションによって使用されるロギングプロファイルを
MANIFEST.MFファイルに設定できます。
10.8.2.2. アプリケーションロギングプロファイルの設定例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、ロギングプロファイルとそれを使用するアプリケーションの設定を表しています。これには、管理 CLI コマンド、結果となる XML、およびアプリケーションの MANIFEST.MF が含まれます。
ロギングプロファイルの例には次のような特徴があります。
-
名前は
accounts-app-profileです。 -
ログカテゴリーは
com.company.accounts.ejbsです。 -
ログレベルは
TRACEです。 ログハンドラーは、
ejb-trace.logファイルを使用するファイルハンドラーです。- 管理 CLI セッション
/subsystem=logging/logging-profile=accounts-app-profile:add
/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})
/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:write-attribute(name="level", value="DEBUG")
/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)
/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add-handler(name="ejb-trace-file")
- XML 設定
<logging-profiles>
<logging-profile name="accounts-app-profile">
<file-handler name="ejb-trace-file">
<level name="DEBUG"/>
<file relative-to="jboss.server.log.dir" path="ejb-trace.log"/>
</file-handler>
<logger category="com.company.accounts.ejbs">
<level name="TRACE"/>
<handlers>
<handler name="ejb-trace-file"/>
</handlers>
</logger>
</logging-profile>
</logging-profiles>
- アプリケーションの MANIFEST.MF ファイル
Manifest-Version: 1.0
Logging-Profile: accounts-app-profile
10.8.3. デプロイメントロギング設定の表示 リンクのコピーリンクがクリップボードにコピーされました!
管理 CLI を使用して、JBoss EAP のデプロイメントのロギング設定を表示できます。
前提条件
- JBoss EAP が実行している。
手順
次のコマンドを使用して、特定のデプロイメントのロギング設定を取得します。
/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resourceCONFIGの値は、次のいずれかになります。-
default: デプロイメントでloggingサブシステム が使用されている場合は、ロギングサブシステム設定が出力されます。 -
profile-PROFILE_NAME: デプロイメントでロギングサブシステムで定義された ロギングプロファイル が使用されている場合は、ロギングプロファイル設定が出力されます。 -
使用される設定ファイルへのパス (例:
myear.ear/META-INF/logging.properties) を指定します。
-
次のコマンドを実行して、特定のロギングプロファイルの設定を表示します。
/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)このコマンドは、指定されたデプロイメントで使用される
MYPROFILEロギングプロファイルの設定を取得します。予想される出力
{ "outcome" => "success", "result" => { "error-manager" => undefined, "filter" => undefined, "formatter" => { "MYFORMATTER" => { "class-name" => "org.jboss.logmanager.formatters.PatternFormatter", "module" => undefined, "properties" => {"pattern" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"} } }, "handler" => { "MYPERIODIC" => { "class-name" => "org.jboss.logmanager.handlers.PeriodicRotatingFileHandler", "encoding" => undefined, "error-manager" => undefined, "filter" => undefined, "formatter" => "MYFORMATTER", "handlers" => [], "level" => "ALL", "module" => undefined, "properties" => { "append" => "true", "autoFlush" => "true", "enabled" => "true", "suffix" => ".yyyy-MM-dd", "fileName" => "EAP_HOME/standalone/log/deployment.log" } } }, "logger" => {"MYCATEGORY" => { "filter" => undefined, "handlers" => [], "level" => "DEBUG", "use-parent-handlers" => true }}, "pojo" => undefined } }次のコマンドを使用して、再帰的な
read-resource操作を実行し、ロギング設定全体とデプロイメントに関するその他の情報を取得することもできます。/deployment=DEPLOYMENT_NAME/subsystem=logging:read-resource(include-runtime=true, recursive=true)