13 トランザクションのモニターおよびトレース

トランザクションをモニターして、リクエストがMicroTxとマイクロサービス間でどのように移動するか、およびMicroTxがトランザクションをどのように管理するかを理解します。

Prometheusは、各ポッドからメトリックを収集するために、マイクロサービス・ポッドの各トランザクション・マネージャにリクエストを送信します。Grafanaを使用して、Prometheusに収集されたメトリック・データをビジュアル化します。マイクロサービス対応トランザクション・マネージャによって生成されたログを表示して、発生する可能性のある問題をトラブルシューティングします。

13.1 トレース

分散トレースを使用して、MicroTxとマイクロサービスの間でのリクエストのフローを理解します。KialiやJaegerなどのツールを使用して、MicroTxの分散トランザクションを追跡およびトレースします。

Istioは、サービス間通信を処理するために個別のインフラストラクチャ・レイヤーを提供するサービス・メッシュです。ネットワーク通信がサービスそのものから取り出されて、プロキシによって処理されます。Istioではサイドカー設計が使用されています。つまり、通信プロキシは各サービス・コンテナ外部の独自のコンテナ内で実行されます。Envoyは、マイクロサービス・コンテナ内にサイドカーとしてデプロイされるプロキシです。サービス・メッシュ内のすべての通信は、Envoyプロキシを介して行われます。Envoyプロキシでは、プロキシ対象のマイクロサービスにかわってトレース・スパンが自動的に生成され、サービスは適切なリクエスト・コンテキストを転送することだけが求められます。https://istio.io/latest/docs/concepts/observability/を参照してください。Istioでは、Zipkin、Jaeger、Lightstep、Datadogなど、多くのトレース・バックエンドがサポートされます。

ノート:

この項で説明するステップは、MicroTxおよびIstioがKubernetesクラスタにデプロイされた環境に固有です。この項で説明する手順は、テスト環境や開発環境のみで使用してください。これらの手順は本番環境向けではありません。

詳細は、KialiとJaegerのドキュメントを参照してください。

13.1.1 Jaegerのインストール

ダウンロードしたIstioインストール・バンドルには、Jaegerをすぐに起動して実行するために基本のサンプル・インストールとしてjaeger.yamlが含まれています。jaeger.yamlファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addonsフォルダにあります。

または、Jaegerを別途インストールします。https://istio.io/latest/docs/ops/integrations/jaeger/を参照してください。

Istioパッケージ・ディレクトリにあるYAMLファイルを使用してJaegerをインストールするには:
  1. Istioパッケージのディレクトリに移動します。たとえば、パッケージがistio-1.15.0の場合:
    cd istio-1.15.0
  2. Jaegerをインストールします。
    kubectl apply -f samples/addons/jaeger.yaml

    サンプル・レスポンス

    deployment.apps/jaeger created
    service/tracing created
    service/zipkin created
    service/jaeger-collector created
  3. 次のコマンドを実行して、Jaegerがインストールされたことを確認します。
    kubectl get all -n istio-system

    サンプル・レスポンス

    NAME                                        READY   STATUS    RESTARTS   AGE
    pod/istio-ingressgateway-6cc856bd7d-qcwk7   1/1     Running   0          10d
    pod/istiod-945b9f699-frff5                  1/1     Running   0          10d
    pod/jaeger-c4fdf6674-wqxhb                  1/1     Running   0          11m
    
    NAME                           TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)                                      AGE
    service/istio-ingressgateway   LoadBalancer   10.97...     <pending>     15021:30651/TCP,80:31635/TCP,443:32196/TCP   10d
    service/istiod                 ClusterIP      10.100...    <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP        10d
    service/jaeger-collector       ClusterIP      10.110...    <none>        14268/TCP,14250/TCP,9411/TCP                 11m
    service/tracing                ClusterIP      10.107...    <none>        80/TCP,16685/TCP                             11m
    service/zipkin                 ClusterIP      10.106...    <none>        9411/TCP                                     11m
    
    NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/istio-ingressgateway   1/1     1            1           10d
    deployment.apps/istiod                 1/1     1            1           10d
    deployment.apps/jaeger                 1/1     1            1           11m
    
    NAME                                              DESIRED   CURRENT   READY   AGE
    replicaset.apps/istio-ingressgateway-6cc856bd7d   1         1         1       10d
    replicaset.apps/istiod-945b9f699                  1         1         1       10d
    replicaset.apps/jaeger-c4fdf6674                  1         1         1       11m
    
    NAME                                                       REFERENCE                         TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
    horizontalpodautoscaler.autoscaling/istio-ingressgateway   Deployment/istio-ingressgateway   <unknown>/80%   1         5         1          10d
    horizontalpodautoscaler.autoscaling/istiod                 Deployment/istiod                 <unknown>/80%   1         5         1          10d
    

13.1.2 Jaegerを使用した分散トレースの実行

Jaegerを使用して分散トレースを実行する方法を理解するために、XAのサンプル・アプリケーションについて考えてみましょう。

サンプル・アプリケーションによって実装されるシナリオでは、口座部門アプリケーションがXAトランザクションを作成して部門から部門に送金します。組織内の2つの部門は、部門1と部門2です。インストール・バンドルで提供されているサンプルXAアプリケーションの詳細は、「XAトランザクション・プロトコル」を参照してください。

分散トレースを実行する前に、アプリケーションをデプロイし、トランザクションを開始していることを確認してください。
  1. istioctlを使用してJaeger UIを開きます。
    istioctl dashboard jaeger
  2. アプリケーションを使用してトランザクションを実行します。
    サンプルXAアプリケーションの場合は、口座サービスを使用して、部門1から一定金額を引き出し、その金額を部門2に預け入れます。
  3. Jaeger UIで、「Search」タブをクリックします。
  4. 「Service」 ドロップダウン・リストで「istio-ingressgateway」を選択します。
  5. 「Find Traces」をクリックし、タイムスタンプが数秒前のトレースを探します。
    サンプルXAアプリケーションを使用した最新のトランザクションのトレースが、次の図のように表示されます。
    トレース
  6. トレースをクリックすると、詳細を確認できます。
  7. 「Service」および「Operation」の下で、すべてのリクエストのフローを確認します。

    Istioイングレス・ゲートウェイは、リクエストを受け取り、それをイニシエータ・サービスである口座サービスに転送します。口座サービスから、トランザクションを開始するためのコールがTCSに送信されました。

13.1.3 Kialiのインストール

ダウンロードしたIstioインストール・バンドルには、Kialiをすぐに起動して実行するために基本のサンプル・インストールとしてkiali.yamlが含まれています。kiali.yamlファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addonフォルダにあります。

または、Kialiを別途インストールします。https://kiali.io/docs/installation/を参照してください。

Istioパッケージ・ディレクトリにあるYAMLファイルを使用してKialiをインストールするには:
  1. Istioパッケージのディレクトリに移動します。たとえば、パッケージがistio-1.15.0の場合:
    cd istio-1.15.0
  2. Kialiをインストールします。
    kubectl apply -f samples/addons/kiali.yaml

    サンプル・レスポンス

    serviceaccount/kiali created
    configmap/kiali created
    clusterrole.rbac.authorization.k8s.io/kiali-viewer created
    clusterrole.rbac.authorization.k8s.io/kiali created
    clusterrolebinding.rbac.authorization.k8s.io/kiali created
    role.rbac.authorization.k8s.io/kiali-controlplane created
    rolebinding.rbac.authorization.k8s.io/kiali-controlplane created
    service/kiali created
    deployment.apps/kiali created
  3. 次のコマンドを実行して、Kialiがインストールされたことを確認します。
    kubectl -n istio-system get svc kiali

    サンプル・レスポンス

    NAME    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)              AGE
    kiali   ClusterIP   10.100.214.26   <none>        20001/TCP,9090/TCP   62s
  4. Kialiダッシュボードを開きます。
    istioctl dashboard kiali

13.1.4 トレース・ヘッダーのリスト

トランザクションを全面的にトレースする場合は、oracle.tmm.PropagateTraceHeaderstrueに設定します。これにより、すべての受信リクエストおよび送信リクエストのトレース・ヘッダーが伝播されます。

次の表に示すのは、伝播されるトレース・ヘッダーの一部です。

ヘッダーの名前 説明
x-request-id
すべてのアプリケーションがこのヘッダーを伝播する必要があります。このヘッダーはアクセス・ログ文に含まれ、Istioでの一貫性のあるトレース・サンプリングおよびログ・サンプリングの決定に使用されます。
oracle-tmm-tx-token
authorization
refresh-token
oracle-tmm-authz-token
これらのMicroTx固有のヘッダーは、ライブラリからMicroTx APIコールを実行するために伝播する必要があります。
end-user
このヘッダーはアプリケーションに固有です。このヘッダーは転送できます。
x-ot-span-context
IstioでLightstepトレースを使用している場合は、このヘッダーを伝播します。https://istio.io/latest/docs/tasks/observability/distributed-tracing/lightstep/を参照してください。
x-datadog-trace-id
x-datadog-parent-id
x-datadog-sampling-priority
Datadogトレースを使用している場合は、これらのヘッダーを伝播します。
traceparent
tracestate
これらは、W3Cトレース・コンテキスト・ヘッダーです。これらは、IstioのOpenCensusエージェントおよびStackdriver構成と互換性があります。
x-cloud-trace-context
Cloud Traceコンテキスト・ヘッダーです。これは、IstioのOpenCensus AgentおよびStackdriverの構成と互換性があります。
grpc-trace-bin
これはgRPCライブラリ・トレース・コンテキスト・ヘッダーです。これは、IstioのOpenCensus AgentおよびStackdriverの構成と互換性があります。

x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
これらは、B3トレース・コンテキスト・ヘッダーです。これらは、IstioのZipkin、OpenCensus AgentおよびStackdriverの構成と互換性があります。

13.2 パフォーマンスのモニター

PrometheusおよびGrafanaを使用して、サービスのパフォーマンス・メトリックを表示します。これらのメトリックを使用して、MicroTxコーディネータのトランザクションおよびヘルスをモニターできます。

MicroTxコーディネータは、Prometheusで簡単に読み取れる形式でメトリックを公開します。Prometheusは、Kubernetesクラスタ内の各ポッドからメトリックを収集するために、各MicroTxポッドにリクエストを送信します。Prometheusは、MicroTxコーディネータに関するメトリックをモニターおよび収集し、Istioサービス・メッシュ内のすべてのアプリケーションのヘルスを追跡するメトリックを記録します。

Grafanaを使用して、Prometheusに収集されたメトリック・データをビジュアル化します。MicroTxダッシュボードをインポートしてメトリックを表示できます。

13.2.1 PrometheusおよびGrafanaの設定

MicroTxをインストールしたKubernetesクラスタにPrometheusおよびGrafanaを設定して、MicroTxをモニターします。

開始する前に、IstioおよびMicroTxをインストールしていることを確認してください。
  1. MicroTxコーディネータのデプロイに使用されるvalues.yamlファイル、Helmチャートで、metricsプロパティをtrueに設定します。PrometheusがMicroTxコーディネータのメトリック・ログをスクレイプできるようにするには、このプロパティを設定する必要があります。

    次のコード・スニペットは、values.yamlファイルのmetricsプロパティのサンプル値を示しています。

    metrics:
      enabled: true
  2. 任意のコード・エディタでprometheus.yamlファイルを開きます。
    ダウンロードしたIstioインストール・バンドルには、Prometheusをすぐに起動して実行するために基本のサンプル・インストールとしてprometheus.yamlが含まれています。prometheus.yamlファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addonフォルダにあります。
  3. scrape_configsの下に次のコード行を追加し、変更を保存します。
    scrape_configs:
    - job_name: tcs-metric
      static_configs:
      - targets:
        - 192.0.2.1

    ここで、192.0.2.1は、Istioイングレス・ゲートウェイの外部IPアドレスです。この値を書き留める方法の詳細は、「Istioイングレス・ゲートウェイのIPアドレスの確認」を参照してください。

  4. 次のコマンドを実行して、Prometheusをインストールします。
    kubectl apply -f samples/addons/prometheus.yaml
  5. 次のコマンドを実行して、Prometheusがインストールされたことを確認します。
    kubectl -n istio-system get svc prometheus
  6. Prometheusサービス検出でMicroTxホストを検出できることを確認します。詳細は、Prometheusのドキュメントを参照してください。
    PrometheusでMicroTxホストを検出できることを確認するには、Prometheusでターゲットを確認するか、Prometheus UIでMicroTxメトリックのいずれかを検索します。
  7. Grafanaをインストールします。
    kubectl apply -f samples/addons/grafana.yaml
    ダウンロードしたIstioインストール・バンドルには、Grafanaをすぐに起動して実行するために基本のサンプル・インストールとしてgrafana.yamlが含まれています。grafana.yamlファイルは、Istioインストール・ファイルをダウンロードした場所のsamples/addonフォルダにあります。

    または、Grafanaを別途インストールします。https://grafana.com/docs/grafana/latest/installation/kubernetes/を参照してください。

  8. 次のコマンドを実行して、Grafanaがインストールされたことを確認します。
    kubectl -n istio-system get svc grafana
  9. Grafanaダッシュボードを起動します。
    istioctl dashboard grafana
    Grafanaダッシュボードが新しいブラウザで開きます。Grafanaダッシュボードにアクセスするためのリンクを書き留めます。
  10. PrometheusによってスクレイプされたMicroTxメトリックがGrafanaダッシュボードに表示されるように、GrafanaでPrometheusデータ・ソースを作成します。
  11. MicroTxに関するメトリックおよび詳細が含まれるJSONファイルをインポートすることで、MicroTxダッシュボードをインポートします。このファイルは、<installation_directory>/otmm-<version>/otmm/dashboards/microtx-dashboard.jsonにあります。
    Grafanaにおけるダッシュボードのインポートの詳細は、https://grafana.com/docs/grafana/latest/dashboards/export-import/#import-dashboardを参照してください。

13.2.2 PrometheusおよびGrafanaを使用したメトリックの表示

PrometheusおよびGrafanaを使用して、MicroTxコーディネータ・メトリックを表示します。

開始する前に、PrometheusおよびGrafanaをインストールして構成したことを確認してください。
  1. 任意のブラウザで、Prometheusを使用してメトリックを表示するために次のURLを入力します。

    URLの構文

    https://externalHostname/metrics

    ここで、externalHostnameはIstioイングレス・ゲートウェイのロード・バランサのIPアドレスです。Istioイングレス・ゲートウェイのIPアドレスの確認を参照してください。たとえば、192.0.2.1です。

  2. MicroTxコーディネータのメトリックを表示します。
    Prometheusは、様々なメトリックの値と各メトリックの説明を示します。
  3. GrafanaのMicroTxダッシュボードで、Prometheusによってスクレイプされたメトリックを視覚化します。

13.3 ログ

MicroTxコーディネータとJava、Spring Boot、Node.jsおよびPython用のMicroTxクライアント・ライブラリは、ログを生成します。

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

13.3.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>

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

13.3.2 サンプル・ログ・メッセージ

サンプル・ログ・メッセージとその構文を表示します。

メッセージは、「ログ・メッセージの構文の定義」の説明に従って、パーサー・フィルタに指定した構文に基づいてログに記録されます。

MicroTxコーディネータによって生成されるログの構文

MicroTxコーディネータ・ログ・ファイルはJSON形式です。次のログ・スニペットに示すように、コーディネータによって生成されるすべてのログはtransactionIdフィールドに関連付けられます。これは、トランザクションの一意のIDです。障害が発生した場合は、このIDを使用して、トランザクションに関連するすべてのメッセージをトラッキングできます。msgフィールドには、トランザクションIDに関連付けられた実際のログが示されます。

{
  "level": "debug",
  "ts": 1695737654.51672,
  "caller": "xa/server.go:409",
  "msg": "set xa tx expiry timer",
  "transactionId": "9f3efc1c-a831-4d9d-bb53-52337363fcc4"
}

MicroTx Javaクライアント・ライブラリによって生成されるログの構文

次のスニペットに示すように、MicroTx Javaクライアント・ライブラリによって生成されるすべてのログ・メッセージはtransactionIdに関連付けられます。これは、トランザクションの一意のIDです。障害が発生した場合は、このIDを使用して、トランザクションに関連するすべてのメッセージをトラッキングできます。

2023-09-28 13:08:36.877  INFO  --- [helidon-2] oracle.tmm.jta.filter.TrmTransactionResponseFilter :
          ccdd6bb2-1376-4d21-9e40-125dc4eaedb3 : TrmTransactionResponseFilter Response Status : 200

説明

  • 2023-09-28 13:08:36.877は、YYYY-MM-DD HH:MM:SS.SSS形式のタイムスタンプです。
  • INFOは、ログ・レベルです。
  • helidon-2は、ログが生成されたJavaアプリケーションの名前です。
  • oracle.tmm.jta.filter.TrmTransactionResponseFilterは、ログが生成されたクラスの名前です。
  • ccdd6bb2-1376-4d21-9e40-125dc4eaedb3は、トランザクションの一意のIDです。
  • TrmTransactionResponseFilter Response Status : 200は、トランザクションIDに関連付けられた実際のログ・メッセージです。

Mapped Diagnostic Context (MDC)キーを使用して、ログ内のトランザクションIDの位置を変更できます。「ログ・メッセージの構文の定義」を参照してください。

MicroTx Node.jsクライアント・ライブラリのログの構文

次のスニペットに示すように、MicroTx Node.jsクライアント・ライブラリによって生成されるすべてのログ・メッセージには、トランザクションIDの接頭辞が付きます。これは、トランザクションの一意のIDです。障害が発生した場合は、このIDを使用して、トランザクションに関連するすべてのメッセージをトラッキングできます。

2023-09-28 6:53:56.678 :: edc36bc0-823e-4660-886f-d7e67c97aa80 - Service Enlisted with LRA : http://localhost:9000/api/v1/lra-coordinator/edc36bc0-823e-4660-886f-d7e67c97aa80

説明

  • 2023-09-28 6:53:56.678は、YYYY-MM-DD HH:MM:SS.SSS形式のタイムスタンプです。
  • edc36bc0-823e-4660-886f-d7e67c97aa80は、トランザクションの一意のIDです。
  • Service Enlisted with LRA : http://localhost:9000/api/v1/lra-coordinator/edc36bc0-823e-4660-886f-d7e67c97aa80は、メッセージです。

13.3.3 MicroTx Node.jsライブラリのログの有効化

デフォルトでは、MicroTxクライアント・ライブラリを使用するMicroTxコーディネータおよびJavaアプリケーションでロギングが有効になっています。ただし、MicroTxクライアント・ライブラリを使用するNode.jsアプリケーションでは、ロギングを有効にする必要があります。

MicroTxライブラリを構成するための値を指定したtmm.propertiesファイルで、次のプロパティの値を指定して、Node.jsアプリケーションのロギングを有効にします:
  1. oracle.tmm.EnableDebugLogstrueに設定します。
    デフォルト値はfalseです。この値をfalseに設定した場合、MicroTxクライアント・ライブラリは、エラーが発生した場合にのみメッセージをログに記録します。
  2. oracle.tmm.enableLogTimestamptrueに設定します(タイムスタンプをYYYY-MM-DD HH:MM:SS.SSS形式で表示する場合)。
    デフォルト値はfalseであるため、デフォルトではタイムスタンプは表示されません。

これらの構成値を環境変数として指定することもできます。tmm.propertiesファイルと環境変数の両方に値を指定した場合、環境変数に設定されている値がプロパティ・ファイルの値をオーバーライドすることに注意してください。

次の例は、環境変数を構成するためのサンプル値を示しています。

export ENABLE_DEBUG_LOGS=true
export ENABLE_LOG_TIMESTAMP=true

環境変数名では大/小文字が区別されることに注意してください。