Activez l’injection dans la configuration du traceur Java en ajoutant -Ddd.logs.injection=true
comme argument de démarrage jvm ou via la variable d’environnement DD_LOGS_INJECTION=true
.
Si vos logs sont au format JSON et que vous utilisez Logback, vous n’avez plus rien à faire. Si vous utilisez une autre bibliothèque de logging, vous devez activer l’auto-injection des attributs MDC dans vos logs.
Si vos logs sont au format brut, modifiez votre formateur en ajoutant dd.trace_id
et dd.span_id
à la configuration de votre logger :
<Pattern>"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %X{dd.trace_id:-0} %X{dd.span_id:-0} - %m%n"</Pattern>
Remarque : si le attribute.path
de votre ID de trace ne correspond pas à dd.trace_id
, assurez-vous que les paramètres des attributs réservés de votre ID de trace prennent en compte le attribute.path
. Pour en savoir plus, consultez la FAQ à ce sujet.
Si vous préférez corréler manuellement vos traces avec vos logs, utilisez l’API Datadog pour récupérer les identificateurs de corrélation :
Utilisez les méthodes d’API CorrelationIdentifier#getTraceId()
et CorrelationIdentifier#getSpanId()
pour injecter les identificateurs au début et à la fin de chaque span dans vos logs (voir les exemples ci-dessous).
Configurez MDC pour utiliser les clés injectées :
dd.trace_id
: l’ID de la trace active lors de l’écriture du message de log (ou 0
en l’absence de trace).dd.span_id
: l’ID de la span active lors de l’écriture du message de log (ou 0
en l’absence de trace).import org.apache.logging.log4j.ThreadContext;
import datadog.trace.api.CorrelationIdentifier;
// Des spans doivent avoir été initialisées et être actives avant ce bloc.
try {
ThreadContext.put("dd.trace_id", String.valueOf(CorrelationIdentifier.getTraceId()));
ThreadContext.put("dd.span_id", String.valueOf(CorrelationIdentifier.getSpanId()));
}
// Loguer quelque chose
finally {
ThreadContext.remove("dd.trace_id");
ThreadContext.remove("dd.span_id");
}
import org.slf4j.MDC;
import datadog.trace.api.CorrelationIdentifier;
// Des spans doivent avoir été initialisées et être actives avant ce bloc.
try {
MDC.put("dd.trace_id", String.valueOf(CorrelationIdentifier.getTraceId()));
MDC.put("dd.span_id", String.valueOf(CorrelationIdentifier.getSpanId()));
}
// Loguer quelque chose
finally {
MDC.remove("dd.trace_id");
MDC.remove("dd.span_id");
}
Modifiez ensuite la configuration de votre logger en ajoutant dd.trace_id
et dd.span_id
à votre pattern de log :
<Pattern>"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %X{dd.trace_id:-0} %X{dd.span_id:-0} - %m%n"</Pattern>
Remarque : si vous n’utilisez pas une intégration de log de Datadog pour analyser vos logs, des règles de parsing de log personnalisées doivent s’assurer que dd.trace_id
et dd.span_id
sont analysés en tant que chaînes de caractères. Pour en savoir plus, consultez la FAQ à ce sujet.
Consultez la documentation relative à la journalisation Java pour en savoir plus sur l’implémentation d’un logger spécifique ou découvrir comment créer des logs au format JSON.
Documentation, liens et articles supplémentaires utiles: