11.7. ログフォーマッターの設定

ログフォーマッターはハンドラーでのログメッセージの形式を定義します。logging サブシステムでは以下のログフォーマッターを設定できます。

11.7.1. パターンフォーマッターの設定

ログハンドラーすべてで使用できる名前付きパターンフォーマッターを作成して、ログメッセージをフォーマットすることができます。

重要

ロギングプロファイルにこのログフォーマッターを設定する場合、 コマンドの最初は /subsystem=logging/ ではなく /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ になります。

さらに、マネージドドメインで実行している場合はコマンドの前に /profile=PROFILE_NAME を付けます。

パターンフォーマッターの作成

パターンフォーマッターを定義するとき、ログメッセージのフォーマットに使用するパターン文字列を指定します。パターン構文の詳細は、パターンフォーマッターのフォーマット文字 を参照してください。

/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:add(pattern=PATTERN)

たとえば、デフォルトの設定はサーバーログへのロギングメッセージのログフォーマッター文字列として %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n を使用します。これにより、以下のようにフォーマットされるログメッセージが作成されます。

2016-03-18 15:49:32,075 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

また、カラーマップを定義してログレベルごとに色を割り当てることもできます。形式は LEVEL:COLOR のコンマ区切りリストです。

  • 有効なレベル: finestfinerfineconfigtracedebuginfowarningwarnerrorfatalsevere
  • 有効な色: blackgreenredyellowbluemagentacyanwhitebrightblackbrightredbrightgreenbrightbluebrightyellowbrightmagentabrightcyanbrightwhite
/subsystem=logging/pattern-formatter=PATTERN_FORMATTER_NAME:write-attribute(name=color-map,value="LEVEL:COLOR,LEVEL:COLOR")

管理コンソールを使用してパターンログフォーマッターを設定することもできます。

  1. ブラウザーで管理コンソールを開きます。
  2. ConfigurationSubsystemsLogging と選択します。
  3. Configuration を選択し、表示 をクリックします。
  4. Formatter を選択し、Pattern Formatter オプションを選択します。

11.7.2. カスタムログフォーマッターの設定

JSON 形式でログメッセージをフォーマットする JSON ログフォーマッターを作成できます。

重要

ロギングプロファイルにこのログフォーマッターを設定する場合、 コマンドの最初は /subsystem=logging/ ではなく /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ になります。

さらに、マネージドドメインで実行している場合はコマンドの前に /profile=PROFILE_NAME を付けます。

JSON ログフォーマッターの追加
/subsystem=logging/json-formatter=JSON_FORMATTER_NAME:add(pretty-print=true, exception-output-type=formatted)

これにより、以下のようにフォーマットされるログメッセージが作成されます。

{
    "timestamp": "2018-10-18T13:53:43.031-04:00",
    "sequence": 62,
    "loggerClassName": "org.jboss.as.server.logging.ServerLogger_$logger",
    "loggerName": "org.jboss.as",
    "level": "INFO",
    "message": "WFLYSRV0025: JBoss EAP 7.4.0.GA (WildFly Core 15.0.2.Final-redhat-00001) started in 5227ms - Started 317 of 556 services (343 services are lazy, passive or on-demand),
    "threadName": "Controller Boot Thread",
    "threadId": 22,
    "mdc": {
    },
    "ndc": "",
    "hostName": "localhost.localdomain",
    "processName": "jboss-modules.jar",
    "processId": 7461
}
Logstash JSON ログフォーマッターの追加
注記

JSON ログフォーマッター出力キーを変更し、静的メタデータを追加できます。JSON ログフォーマッターの主な目的は、ログメッセージを JSON 形式でフォーマットすることです。Logstash はこの JSON 出力を消費し、@timestamp および @version のフィールドを検索します。以下の例では、Logstash のメッセージをフォーマットする JSON ログフォーマッターを作成します。

/subsystem=logging/json-formatter=logstash:add(exception-output-type=formatted, key-overrides=[timestamp="@timestamp"], meta-data=[@version=1])

JSON フォーマッター属性は以下の説明どおりに使用できます。

  • key-overrides 属性は、定義されたキーの名前をオーバーライドするために使用できます。
  • exception-output-type 属性を formatted に設定すると、例外をオブジェクトとしてフォーマットできます。
  • exception-output-type 属性を detailed に設定すると、例外スタックトレースを含めることができます。
  • exception-output-type 属性を detailed-and-formatted に設定すると、例外をオブジェクトとしてフォーマットし、スタックトレースを含めることができます。
  • meta-data 属性を使用すると、メタデータをログレコードに追加できます。

JSON フォーマッター属性の詳細は JSON ログフォーマッター属性 を参照してください。

管理コンソールを使用して JSON ログフォーマッターを設定することもできます。

  1. ブラウザーで管理コンソールを開きます。
  2. ConfigurationSubsystemsLogging と選択します。
  3. Configuration を選択し、表示 をクリックします。
  4. Formatter を選択し、JSON Formatter オプションを選択します。

11.7.3. XML ログフォーマッターの設定

XML 形式でログメッセージをフォーマットする XML ログフォーマッターを作成できます。

重要

ロギングプロファイルにこのログフォーマッターを設定する場合、 コマンドの最初は /subsystem=logging/ ではなく /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ になります。

さらに、マネージドドメインで実行している場合はコマンドの前に /profile=PROFILE_NAME を付けます。

XML ログフォーマッターの追加
/subsystem=logging/xml-formatter=XML_FORMATTER_NAME:add(pretty-print=true, exception-output-type=detailed-and-formatted)

これにより、以下のようにフォーマットされるログメッセージが作成されます。

<record>
    <timestamp>2018-10-18T13:55:53.419-04:00</timestamp>
    <sequence>62</sequence>
    <loggerClassName>org.jboss.as.server.logging.ServerLogger_$logger</loggerClassName>
    <loggerName>org.jboss.as</loggerName>
    <level>INFO</level>
    <message>WFLYSRV0025: {ProductCurrentVersionExamples} (WildFly Core 10.0.0.Final-redhat-20190924) started in 6271ms - Started 495 of 679 services (331 services are lazy, passive or on-demand)</message>
    <threadName>Controller Boot Thread</threadName>
    <threadId>22</threadId>
    <mdc>
    </mdc>
    <ndc></ndc>
    <hostName>localhost.localdomain</hostName>
    <processName>jboss-modules.jar</processName>
    <processId>7790</processId>
</record>
キーオーバーライド XML ログフォーマッターの追加
/subsystem=logging/xml-formatter=XML_FORMATTER_NAME:add(pretty-print=true, print-namespace=true, namespace-uri="urn:custom:1.0", key-overrides={message=msg, record=logRecord, timestamp=date}, print-details=true)

XML フォーマッター属性は以下の説明どおりに使用できます。

  • key-overrides 属性は、定義されたキーの名前をオーバーライドするために使用できます。
  • exception-output-type 属性を formatted に設定すると、例外をオブジェクトとしてフォーマットできます。
  • exception-output-type 属性を detailed に設定すると、例外スタックトレースを含めることができます。
  • exception-output-type 属性を detailed-and-formatted に設定すると、例外をオブジェクトとしてフォーマットし、スタックトレースを含めることができます。
  • meta-data 属性を使用すると、メタデータをログレコードに追加できます。

XML フォーマッター属性の詳細は XML ログフォーマッター属性 を参照してください。

管理コンソールを使用して XML ログフォーマッターを設定することもできます。

  1. ブラウザーで管理コンソールを開きます。
  2. ConfigurationSubsystemsLogging と選択します。
  3. Configuration を選択し、表示 をクリックします。
  4. Formatter を選択し、XML Formatter オプションを選択します。

11.7.4. カスタムログフォーマッターの設定

ログハンドラーすべてで使用できるカスタムログフォーマッターを作成して、ログメッセージをフォーマットすることができます。

ここでは、管理 CLI を使用してカスタムログフォーマッターを設定する方法を説明します。

カスタムログフォーマッターの設定
重要

ロギングプロファイルにこのログフォーマッターを設定する場合、 コマンドの最初は /subsystem=logging/ ではなく /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/ になります。

さらに、マネージドドメインで実行している場合はコマンドの前に /profile=PROFILE_NAME を付けます。

  1. カスタムログフォーマッターを追加します。

    カスタムログフォーマッターを追加する場合、フォーマッターの Java クラスとフォーマッターが含まれる JBoss EAP モジュールを指定する必要があります。クラスは java.util.logging.Formatter を拡張する必要があります。

    注記

    すでに、カスタムフォーマッターが含まれるモジュールが作成されている必要があります。 作成されていないと、このコマンドの実行に失敗します。

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:add(class=CLASS_NAME, module=MODULE_NAME)
  2. ログフォーマッターに必要なプロパティーを設定します。

    setter メソッドを使用してプロパティーにアクセスできなければなりません。

    /subsystem=logging/custom-formatter=CUSTOM_FORMATTER_NAME:write-attribute(name=properties.PROPERTY_NAME,value=PROPERTY_VALUE)
  3. カスタムフォーマッターをログハンドラーに割り当てます。

    以下の管理 CLI コマンドは、Periodic Rotating ファイルハンドラーによって使用されるカスタムフォーマッターを割り当てます。

    /subsystem=logging/periodic-rotating-file-handler=FILE_HANDLER_NAME:write-attribute(name=named-formatter, value=CUSTOM_FORMATTER_NAME)
カスタム XML フォーマッターの例

以下の例は、カスタム XML フォーマッターを設定します。org.jboss.logmanager モジュールに提供される java.util.logging.XMLFormatter クラスを使用し、Console ログハンドラーに割り当てます。

/subsystem=logging/custom-formatter=custom-xml-formatter:add(class=java.util.logging.XMLFormatter, module=org.jboss.logmanager)
/subsystem=logging/console-handler=CONSOLE:write-attribute(name=named-formatter, value=custom-xml-formatter)

このフォーマッターを使用するログメッセージは以下のようにフォーマットされます。

<record>
  <date>2016-03-23T12:58:13</date>
  <millis>1458752293091</millis>
  <sequence>93963</sequence>
  <logger>org.jboss.as</logger>
  <level>INFO</level>
  <class>org.jboss.as.server.BootstrapListener</class>
  <method>logAdminConsole</method>
  <thread>22</thread>
  <message>WFLYSRV0051: Admin console listening on http://%s:%d</message>
  <param>127.0.0.1</param>
  <param>9990</param>
</record>
管理コンソールを使用したカスタムログフォーマッターの設定

管理コンソールを使用してカスタムログフォーマッターを設定することもできます。

  1. ブラウザーで管理コンソールを開きます。
  2. ConfigurationSubsystemsLogging と選択します。
  3. Configuration を選択し、表示 をクリックします。
  4. Formatter を選択し、Custom Formatter オプションを選択します。