はじめに
ログ収集が設定されていることを確認します。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_id
と dd.span_id
が文字列としてパースされていることを確認する必要があります。詳しくは、関連するログがトレース ID パネルに表示されないを参照してください。
特定のロガー実装の詳細や JSON 形式でのログ方法については、Java ログ収集のドキュメントを参照してください。
その他の参考資料