Si vous ne collectez pas déjà des logs avec Datadog, consultez la documentation relative aux logs pour configurer des logs. Assurez-vous que le tag source (spécifiant le langage) est correctement configuré. Datadog recommande de mettre en place une collecte de logs basée sur l’Agent.
Pour les langages tels que Python, Java et Ruby, aucune configuration supplémentaire n’est nécessaire si le tag source est configuré correctement dans vos logs. Tous les attributs requis sont automatiquement taggés et envoyés à Datadog.
Pour les langages de backend tels que C#, .NET, Go et Node.js, les exemples de code de chaque section montrent comment configurer correctement un log d’erreur et joindre la pile la stack trace requise dans error.stack du log.
Si vous envoyez déjà des stack traces à Datadog mais qu’elles ne figurent pas dans error.stack, vous pouvez configurer un remappeur de logs générique pour remapper la stack trace vers l’attribut adéquat dans Datadog.
Pour configurer les extraits de code en ligne dans les problèmes, configurez l’intégration de code source. L’ajout d’extraits de code dans Error Tracking pour les logs ne nécessite pas l’utilisation de l’APM. Les tags d’enrichissement et le référentiel lié sont les mêmes pour les deux.
Pour activer Error Tracking, les logs doivent inclure les deux éléments suivants :
Un champ error.kind ou error.stack. Remarque : si vous utilisez error.stack, il doit s’agir d’une stack trace valide.
Un niveau de statut de ERROR, CRITICAL, ALERT ou EMERGENCY.
Les autres attributs énumérés ci-dessous sont facultatif, mais leur présence améliore le regroupement des erreurs.
Des attributs spécifiques sont affichés dans un interface dédiée dans Datadog. Pour activer ces fonctionnalités pour Error Tracking, utilisez les noms d’attributs suivants :
Attribut
Rôle
error.stack
La stack trace réelle
error.message
Le message d’erreur contenu dans la stack trace
error.kind
Le type d’erreur (par exemple, « Exception » ou « OSError »)
Remarque : par défaut, les pipelines des intégrations tentent de remapper les paramètres par défaut de la bibliothèque de création de logs sur ces attributs spécifiques et parsent les stack traces ou tracebacks afin d’extraire automatiquement error.message et error.kind.
Pour loguer manuellement une exception interceptée, vous pouvez utiliser le code suivant :
varlog=newLoggerConfiguration().WriteTo.File(newJsonFormatter(renderMessage:true),"log.json").Enrich.WithExceptionDetails().CreateLogger();try{// ...}catch(Exceptionex){// transmettre l'exception en tant que premier argument de l'appel de loglog.Error(ex,"an exception occurred");}
Pour loguer manuellement une exception interceptée, vous pouvez utiliser le code suivant :
privatestaticLoggerlog=LogManager.GetCurrentClassLogger();staticvoidMain(string[]args){try{// ...}catch(Exceptionex){// transmettre l'exception en tant que premier argument de l'appel de loglog.ErrorException("an exception occurred",ex);}}
Pour loguer manuellement une exception interceptée, vous pouvez utiliser le code suivant :
classProgram{privatestaticILoglogger=LogManager.GetLogger(typeof(Program));staticvoidMain(string[]args){try{// ...}catch(Exceptionex){// transmettre l'exception en tant que premier argument de l'appel de loglog.Error("an exception occurred",ex);}}}
Pour loguer manuellement une exception interceptée, vous pouvez utiliser le code suivant :
Loggerlogger=LogManager.getLogger("HelloWorld");try{// ...}catch(Exceptione){// transmettre l'exception en tant que dernier argument de l'appel de loglogger.error("an exception occurred",e)}
Pour loguer manuellement une exception interceptée, vous pouvez utiliser le code suivant :
Loggerlogger=LoggerFactory.getLogger(NameOfTheClass.class);try{// ...}catch(Exceptione){// transmettre l'exception en tant que dernier argument de l'appel de loglogger.error("an exception occurred",e)}
Si vous utilisez Lograge, vous pouvez également le configurer pour qu’il envoie des logs d’erreurs formatés :
Rails.application.configuredojsonLogger=Logger.new(STDOUT)# STDOUT ou fichier en fonction de la configuration de votre AgentjsonLogger.formatter=JsonWithErrorFieldFormatter.new# Le remplacement de Rails entraîne celui du logger TaggedLogging par un nouveau avec le formateur json par défaut.# TaggedLogging n'est pas compatible avec des messages complexes au format jsonconfig.logger=jsonLogger# Config Logrageconfig.lograge.enabled=trueconfig.lograge.formatter=Lograge::Formatters::Raw.new# Désactive la coloration du logconfig.colorize_logging=false# Configurer le logging d'exceptions dans les champs appropriésconfig.lograge.custom_options=lambdado|event|ifevent.payload[:exception_object]return{level:'ERROR',message:event.payload[:exception_object].inspect,error:{kind:event.payload[:exception_object].class,message:event.payload[:exception_object].message,stack:event.payload[:exception_object].backtrace.join("\n")}}endendend