11.8. アプリケーションのロギング
アプリケーションのロギングは、JBoss EAP の logging
サブシステムを使用するか、デプロイメントごとに設定できます。
ログメッセージの取得に JBoss EAP ログカテゴリーおよびハンドラーを使用する方法は Logging サブシステム を参照してください。
サポートされるアプリケーションロギングフレームワークやデプロイメントごとのロギング設定など、アプリケーションロギングの詳細は JBoss EAP開発ガイド のロギングの章を参照してください。
11.8.1. デプロイメントごとのロギング
デプロイメントごとのロギングを使用すると、開発者はアプリケーションのロギング設定を事前に設定できます。アプリケーションがデプロイされると、定義された設定に従ってロギングが開始されます。この設定によって作成されたログファイルにはアプリケーションの動作に関する情報のみが含まれます。
デプロイメントごとのロギング設定が行われない場合、すべてのアプリケーションとサーバーには logging
サブシステムの設定が使用されます。
この方法では、システム全体のロギングを使用する利点と欠点があります。利点は、JBoss EAP インスタンスの管理者がサーバーロギング以外のロギングを設定する必要がないことです。欠点は、デプロイメントごとのロギング設定はサーバーの起動時に読み取り専用であるため、実行時に変更できないことです。
アプリケーションでデプロイメントごとのロギングを使用する手順については、JBoss EAP開発ガイド のデプロイメントごとのロギングをアプリケーションに追加を参照してください。
11.8.1.1. デプロイメントごとのロギングの無効化
以下の方法の 1 つを使用するとデプロイメントごとのロギングを無効にできます。
use-deployment-logging-config
属性をfalse
に設定します。use-deployment-logging-config
属性は、デプロイメントがデプロイメントごとにロギングに対してスキャンされるかどうかを制御します。デフォルトはtrue
です。デプロイメントごとのロギングを無効にするにはこの属性をfalse
に設定します。/subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)
jboss-deployment-structure.xml
ファイルを使用してlogging
サブシステムを除外します。手順については、JBoss EAP開発ガイド のサブシステムをデプロイメントから除外を参照してください。
11.8.2. ロギングプロファイル
ロギングプロファイルは、デプロイされたアプリケーションに割り当てることができる独立したロギング設定のセットです。通常の logging
サブシステム同様にロギングプロファイルはハンドラー、カテゴリー、およびルートロガーを定義できますが、他のプロファイルや主要な logging
サブシステムを参照できません。設定が容易である点でロギングプロファイルは logging
サブシステムと似ています。
ロギングプロファイルを使用すると、管理者は他のロギング設定に影響を与えずに 1 つ以上のアプリケーションに固有するロギング設定を作成することができます。各プロファイルはサーバー設定で定義されるため、ロギング設定を変更しても影響を受けるアプリケーションを再デプロイする必要はありません。
各ロギングプロファイルには以下の項目を設定できます。
- 一意な名前。この値は必須です。
- 任意の数のログハンドラー。
- 任意の数のログカテゴリー。
- 最大 1 つのルートロガー。
アプリケーションでは Logging-Profile
属性を使用して、MANIFEST.MF
ファイルで使用するロギングプロファイルを指定できます。
11.8.2.1. ロギングプロファイルの設定
ロギングプロファイルは、ログハンドラー、カテゴリー、およびルートロガーで設定できます。ロギングプロファイルの設定には、logging
サブシステムの設定と同じ構文を使用しますが、以下の点が異なります。
-
ルート設定パスが
/subsystem=logging/logging-profile=NAME
になります。 - ロギングプロファイルに他のロギングプロファイルを追加できません。
logging
サブシステムには、ロギングプロファイルに使用できない以下の属性があります。-
add-logging-api-dependencies
-
use-deployment-logging-config
-
ロギングプロファイルの作成および設定
以下の手順では、管理 CLI を使用してロギングプロファイルを作成し、ファイルハンドラーとロガーカテゴリーを設定します。管理コンソールでは Configuration
ロギングプロファイルを作成します。
/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")
ファイルハンドラー属性の一覧は、File ログハンドラーの属性 を参照してください。
ロガーカテゴリーを作成します。
/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
ファイルに設定できます。詳細は、JBoss EAP開発ガイド のアプリケーションでのロギングプロファイルの指定を参照してください。
11.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
11.8.3. デプロイメントロギング設定の表示
以下の管理 CLI コマンドを使用すると、特定のデプロイメントのロギング設定に関する情報を取得できます。
/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resource
デプロイメントのロギング設定値である CONFIG
には、以下の 3 つの値の 1 つを指定します。
-
デプロイメントが
logging
logging サブシステム を使用する場合はdefault
を指定します。これにより、logging
サブシステムの設定が出力されます。 -
デプロイメントが
logging
サブシステムに定義されている ロギングプロファイル を使用する場合は、profile-PROFILE_NAME
を指定します。これにより、ロギングプロファイルの設定が出力されます。 -
使用される設定ファイルへのパス (例:
myear.ear/META-INF/logging.properties
) を指定します。
たとえば、以下の管理 CLI コマンドは、特定のデプロイメントによって使用される MYPROFILE
ロギングプロファイルの設定を表示します。
/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)
以下の情報が出力されます。
{
"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)