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

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

KubernetesクラスタでMicroTxによって生成されたログを表示する場合、Elasticsearch、FluentdまたはFluent BitおよびKibana (EFK)、Elasticsearch、LogStashおよびKibana (ELK)スタック、またはMicroTxコーディネータおよびアプリケーションのログ・ファイルを1つの場所に集約して表示するための他の任意のアプリケーションを設定できます。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. MicroTx Javaライブラリの場合、MDCキーmicrotx-txnIdlog4j.PatternLayoutに追加してログ・メッセージの構文を指定します。

    次のコード・サンプルは、MDCコンテキストmicrotx-txnIdを作成し、ログ・メッセージ内の様々なフィールドの位置を指定する方法を示しています。このLog4Jの構成例では、ロガーの名前はoracle.tmmであり、ログ・レベルはDEBUGに設定され、AppenderRefMicroTxLibとして指定されます。PatternLayoutは、ログ・メッセージの構文を指定します。%X{microtx-txnId}は、一意のトランザクションIDを示します。MicroTxがメッセージをログに記録するときに、%X{microtx-txnId}は実際のトランザクションIDに置き換えられます。

    <?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 : %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 : %X{microtx-txnId} : %msg%n%throwable"/>
            </Console>
        </Appenders>
        <Loggers>
            <Logger name="oracle.tmm" level="DEBUG" additivity="false">
                <AppenderRef ref="MicroTxLib"/>
            </Logger>
            <Root level="info">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>

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