はじめに

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

自動挿入

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

:

  • Automatic injection of trace correlation is available for Log4j2, Log4j, or SLF4J and Logback.
  • If the attribute.path for your trace ID is not dd.trace_id, ensure that your trace ID reserved attribute settings account for the attribute.path. For more information, see Correlated Logs Not Showing Up in the Trace ID Panel.
ベータ版: バージョン 1.18.3 から、サービスが実行される場所で Agent リモート構成が有効になっている場合、サービスカタログ の UI で DD_LOGS_INJECTION を設定できます。

手動挿入

手動でトレースとログに相関性を持たせたい場合は、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");
}
import org.tinylog.ThreadContext;
import datadog.trace.api.CorrelationIdentifier;

// There must be spans started and active before this block.
try {
    ThreadContext.put("dd.trace_id", CorrelationIdentifier.getTraceId());
    ThreadContext.put("dd.span_id", CorrelationIdentifier.getSpanId());

// Log something

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

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

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

その他の参考資料