Java ログとトレースの接続

Java ログとトレースの接続

はじめに

ログ収集が設定されていることを確認します。Log4j、Log4j 2、Logback の手順については、Java ログ収集を参照してください。

自動挿入

バージョン 0.74.0 以降、Java トレーサーは自動的にトレース相関識別子をログに挿入します。それ以前のバージョンでは、システムプロパティとして dd.logs.injection=true を追加するか、環境変数 DD_LOGS_INJECTION=true を使用して、Java トレーサーの自動挿入を有効にします。コンフィギュレーションの詳細については、Java トレーサーのコンフィギュレーションページを参照してください。

: トレース ID の attribute.pathdd.trace_id ではない 場合は’、当該トレース ID の attribute.path 向け予約済み属性設定アカウントを確認してください。詳しくは、このトピックについてのよくあるご質問を参照してください。

手動挿入

手動でトレースとログに相関性を持たせたい場合は、Java トレーサーの API を使用して相関識別子を取得します。CorrelationIdentifier.getTraceId および CorrelationIdentifier.getSpanId メソッドを使用して、ログに記録されるスパンの先頭に識別子を挿入し、スパンの完了時に識別子を削除します。

import org.apache.logging.log4j.ThreadContext;
import datadog.trace.api.CorrelationIdentifier;

// このブロックより前に開始し、アクティブなスパンがある必要があります。
try {
    ThreadContext.put("dd.trace_id", CorrelationIdentifier.getTraceId());
    ThreadContext.put("dd.span_id", CorrelationIdentifier.getSpanId());

// 何かをログ

} finally {
    ThreadContext.remove("dd.trace_id");
    ThreadContext.remove("dd.span_id");
}
import org.slf4j.MDC;
import datadog.trace.api.CorrelationIdentifier;

// このブロックより前に開始し、アクティブなスパンがある必要があります。
try {
    MDC.put("dd.trace_id", CorrelationIdentifier.getTraceId());
    MDC.put("dd.span_id", CorrelationIdentifier.getSpanId());

// 何かをログ

} finally {
    MDC.remove("dd.trace_id");
    MDC.remove("dd.span_id");
}

: ログのパースに Datadog ログインテグレーションを使用していない場合は、カスタムログパースルールによって dd.trace_iddd.span_id が文字列としてパースされていることを確認する必要があります。詳しくは、このトピックに関するよくあるご質問 を参照してください。

特定のロガー実装の詳細や JSON 形式でのログ方法については、Java ログ収集のドキュメントを参照してください

その他の参考資料