Correlación de logs y trazas de Java
Antes de empezar
Asegúrate de que la recopilación de log está configurada. Consulta Recopilación de log de Java para obtener instrucciones sobre Log4j, Log4j 2 o Logback.
Inyección automática
A partir de la versión 0.74.0, el rastreador de Java inyecta automáticamente identificadores de correlación de traza en logs con formato JSON. Para versiones anteriores, activa la inyección automática en el rastreador de Java añadiendo dd.logs.injection=true
como propiedad del sistema, o a través de la variable de entorno DD_LOGS_INJECTION=true
. Los detalles completos de configuración pueden encontrarse en la página de configuración del rastreador de Java.
Notas:
- La inyección automática de la correlación de traza está disponible para Log4j2, Log4j o SLF4J y Logback.
- Si la
attribute.path
de tu ID de traza no es dd.trace_id
, asegúrate de que la configuración de atributos reservados de tu ID de traza tiene en cuenta la attribute.path
. Para obtener más información, consulta Los logs correlacionados no aparecen en el panel de ID de traza.
Inyección manual
Si prefieres correlacionar manualmente tus trazas con tus logs, utiliza la API del rastreador de Java para recuperar los identificadores de correlación. Utiliza los métodos CorrelationIdentifier.getTraceId
y CorrelationIdentifier.getSpanId
para inyectar identificadores al principio del tramo que se está registrando, y elimina los identificadores cuando el tramo haya finalizado.
import org.apache.logging.log4j.ThreadContext;
import datadog.trace.api.CorrelationIdentifier;
// Deben haber tramos iniciados y activos antes de este bloque.
try {
ThreadContext.put("dd.trace_id", CorrelationIdentifier.getTraceId());
ThreadContext.put("dd.span_id", CorrelationIdentifier.getSpanId());
// Loguear algo.
} finally {
ThreadContext.remove("dd.trace_id");
ThreadContext.remove("dd.span_id");
}
import org.slf4j.MDC;
import datadog.trace.api.CorrelationIdentifier;
// Deben haber tramos iniciados y activos antes de este bloque.
try {
MDC.put("dd.trace_id", CorrelationIdentifier.getTraceId());
MDC.put("dd.span_id", CorrelationIdentifier.getSpanId());
// Loguear algo.
} finally {
MDC.remove("dd.trace_id");
MDC.remove("dd.span_id");
}
import org.tinylog.ThreadContext;
import datadog.trace.api.CorrelationIdentifier;
// Deben haber tramos iniciados y activos antes de este bloque.
try {
ThreadContext.put("dd.trace_id", CorrelationIdentifier.getTraceId());
ThreadContext.put("dd.span_id", CorrelationIdentifier.getSpanId());
// Loguear algo.
} finally {
ThreadContext.remove("dd.trace_id");
ThreadContext.remove("dd.span_id");
}
Nota: Si no utilizas la integración de log de Datadog para analizar tus logs, las reglas personalizadas de parseo de log deben asegurar que dd.trace_id
y dd.span_id
se analicen como cadenas. Para obtener más información, consulta Los logs correlacionados no aparecen en el panel de ID de traza.
Consulta la documentación de la recopilación de log de Java para obtener más detalles sobre el despliegue específico del registrador e instrucciones para el registro en formato JSON.
Leer más
Additional helpful documentation, links, and articles: