14.4.1 ログ・メッセージの構文の定義

ログに記録する詳細とログ・メッセージの構文を指定します。

KubernetesクラスタでMicroTxによって生成されたログを表示するには、MicroTxコーディネータおよびアプリケーションのログ・ファイルを1つの場所に集約して表示するように、次のいずれかのスタックまたは他のアプリケーションを設定します。
  • Elasticsearch、FluentdまたはFluent Bit、およびKibana (EFK)スタック
  • Elasticsearch、LogStashおよびKibana (ELK)スタック

EFKまたはELKスタックの設定の詳細は、アプリケーションの製品ドキュメントを参照してください。

EFKまたはELKスタックを設定したら、次のステップを1回実行して、ログに記録する詳細とログ・メッセージの構文を指定する必要があります。
  1. ログ・アグリゲータのパーサー・フィルタを定義します。次の例では、Fluentbitのパーサーを定義しています。Regexフィールドでは、ログ・メッセージの構文とログに記録する詳細を指定します。同様に、使用するログ・アグリゲータのパーサーを定義できます。詳細は、ログ・アグリゲータの製品ドキュメントを参照してください。
        [PARSER]
            Name  mtxnodejslib
            Format regex
            Regex  ^(?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)\s+::\s+(?<transactionId>[a-f0-9-]+)\s+-\s+(?<message>.+)$
            Time_Key timestamp
            Time_Format %Y-%m-%dT%H:%M:%S.%zZ
         
        [PARSER]
            Name  mtxlraspringbootlib
            Format regex
            Regex  ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(?<log_level>\w+)\s+(?<numeric_value>\d+)\s+---\s+\[(?<thread_info>[\w-]+)\]\s+(?<logger_name>\S+)\s+:\s+(?<transactionId>\S+)\s+-\s+(?<message>.+)$
            Time_Key timestamp
            Time_Format %Y-%m-%d %H:%M:%S.%z
     
        [PARSER]
            Name  mtxhelidon
            Format regex
            Regex  ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(?<log_level>\w+)\s+---\s+\[(?<thread_name>[^\]]+)\]\s+(?<logger_name>[^:]+)\s+:\s+(?<transactionId>[a-f0-9-]+)\s+:\s+(?<log_message>.+)$
            Time_Key timestamp
            Time_Format %Y-%m-%d %H:%M:%S.%z
     
        [PARSER]
            Name  mtxxaspringbootlib
            Format regex
            Regex  ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(?<log_level>\w+)\s+\d+\s+---\s+\[(?<thread_name>[^\]]+)\]\s+(?<logger_name>[^:]+)\s+:\s+(?<transactionId>[a-f0-9-]+)\s+:\s+(?<log_message>.+)$
            Time_Key timestamp
            Time_Format %Y-%m-%d %H:%M:%S.%z
    パーサーで指定した構文に対応するサンプル・ログを表示するには、「サンプル・ログ・メッセージ」を参照してください。
  2. Helidonアプリケーション用のMicroTx Javaライブラリの場合、ログ・メッセージの構文を指定するためのXMLファイル(log4j2.xmlなど)をアプリケーションのresourcesフォルダに作成します。たとえば、src/main/resources/log4j2.xmlです。
    1. 次のコード・サンプルは、ログ・メッセージ内の様々なフィールドの位置を指定する方法を示しています。

      <Console name="MicroTxLib" target="SYSTEM_OUT">
                  <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}  %-5level --- [%t] %-50.70C : [microtx-log] %X{microtx-txnId} : %msg%n%throwable"/>
              </Console>

      説明

      • MicroTxLib: この名前は、後でLoggerセクションでログに記録するパッケージを定義するために指定するため、書き留めておきます。
      • PatternLayout: ログ・メッセージの構文を指定します。
      • [microtx-log]: MicroTxライブラリによって生成されたログ・メッセージの先頭に付けられます。これにより、MicroTxライブラリによって生成されたログ・メッセージと、アプリケーションによって生成されたメッセージを区別できます。[microtx-log]を使用してMicroTxライブラリによって生成されたすべてのログ・メッセージをフィルタします。
      • %X{microtx-txnId}: 一意のトランザクションIDを示します。MicroTxがメッセージをログに記録するときに、%X{microtx-txnId}は実際のトランザクションIDに置き換えられます。
    2. 前のステップで指定したログ・メッセージ定義を使用するMicroTxパッケージの名前を指定します。
      <Logger name="oracle.tmm" level="DEBUG" additivity="false">
              <AppenderRef ref="MicroTxLib"/>
      </Logger>
      
      <Logger name="com.oracle" level="TRACE" additivity="false">
              <AppenderRef ref="MicroTxLib"/>
      </Logger>

      説明

      • oracle.tmmおよびcom.oracleは、メッセージをログに記録するMicroTxパッケージの名前です。
      • DEBUGおよびTRACEはログ・レベルです。次のいずれかの値を入力して、MicroTxライブラリのログ・レベルを指定します:
        • INFO: MicroTxの通常の操作中に発生するイベントをログに記録します。この設定では、最小限の情報を記録します。これはデフォルトの設定です。
        • WARNING: 有害な状況を引き起こす可能性のあるイベントをログに記録します。
        • ERROR: トラブルシューティングが必要な問題があることを示すためにイベントをログに記録します。
        • DEBUG: すべてのイベントをログに記録します。この設定は、問題をデバッグする場合に使用します。
      • MicroTxLibは、AppenderRefの値です。この値は、前のステップで入力したnameの値と一致する必要があります。

    次のコードでは、log4j2.xmlファイルのサンプル・エントリを示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}  %-5level --- [%t] %-50.70C : [microtx-log] %X{microtx-txnId} : %msg%n%throwable"/>
            </Console>
     
            <Console name="MicroTxLib" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}  %-5level --- [%t] %-50.70C : [microtx-log] %X{microtx-txnId} : %msg%n%throwable"/>
            </Console>
        </Appenders>
        <Loggers>
            <Logger name="oracle.tmm" level="DEBUG" additivity="false">
                <AppenderRef ref="MicroTxLib"/>
            </Logger>
            <Logger name="com.oracle" level="TRACE" additivity="false">
                <AppenderRef ref="MicroTxLib"/>
            </Logger>
    
            <Root level="info">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>
  3. Spring RESTアプリケーション用のMicroTx Javaライブラリの場合、ログ・メッセージの構文を指定するためのXMLファイルをアプリケーションのresourcesフォルダに作成します。たとえば、src/main/resources/logback-spring.xmlです。
    1. 次のコード・サンプルは、ログ・メッセージ内の様々なフィールドの位置を指定するアペンダの定義方法を示しています。

      <appender name="ConsoleMTX"
                    class="ch.qos.logback.core.ConsoleAppender">
              <layout class="ch.qos.logback.classic.PatternLayout">
                  <Pattern>
                      %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} [microtx-log] %X{microtx-txnId} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
                  </Pattern>
              </layout>
          </appender>

      説明

      • ConsoleMTX: この名前は、後でLoggerセクションでログに記録するパッケージを定義するために指定するため、書き留めておきます。
      • Pattern: ログ・メッセージの構文を指定します。
      • [microtx-log]: MicroTxライブラリによって生成されたログ・メッセージの先頭に付けられます。これにより、MicroTxライブラリによって生成されたログ・メッセージと、アプリケーションによって生成されたメッセージを区別できます。[microtx-log]を使用してMicroTxライブラリによって生成されたすべてのログ・メッセージをフィルタします。
      • %X{microtx-txnId}: 一意のトランザクションIDを示します。MicroTxがメッセージをログに記録するときに、%X{microtx-txnId}は実際のトランザクションIDに置き換えられます。
    2. 前のステップで定義したアペンダを使用するMicroTxパッケージの名前を指定します。
      <Logger name="oracle.tmm" level="TRACE" additivity="false">
              <AppenderRef ref="ConsoleMTX"/>
      </Logger>
      <Logger name="com.oracle" level="DEBUG" additivity="false">
              <AppenderRef ref="ConsoleMTX"/>
      </Logger>

      説明

      • oracle.tmmおよびcom.oracleは、メッセージをログに記録するMicroTxパッケージの名前です。
      • TRACEおよびDEBUGはログ・レベルです。次のいずれかの値を入力して、MicroTxライブラリのログ・レベルを指定します:
        • INFO: MicroTxの通常の操作中に発生するイベントをログに記録します。この設定では、最小限の情報を記録します。これはデフォルトの設定です。
        • WARNING: 有害な状況を引き起こす可能性のあるイベントをログに記録します。
        • ERROR: トラブルシューティングが必要な問題があることを示すためにイベントをログに記録します。
        • DEBUG: すべてのイベントをログに記録します。この設定は、問題をデバッグする場合に使用します。
      • ConsoleMTXは、AppenderRefの値です。この値は、前のステップで入力したappender nameの値と一致する必要があります。

別のツールを使用して情報をログに記録する場合は、同様の方法でログ・メッセージの構文を指定します。