Si aún no estás recopilando logs con Datadog, consulta la documentación de logs para configurar logs. Asegúrate de que la etiqueta source (especificando el idioma) está correctamente configurada. Datadog recomienda configurar la recopilación de log basada en Agent.
Para idiomas como Python, Java y Ruby, no se necesita configuración adicional si la etiqueta source en tus logs está configurada correctamente. Todos los atributos necesarios se etiquetan automáticamente y se envían a Datadog.
Para lenguajes backend como C#, .NET, Go y Node.js, los ejemplos de código de cada sección demuestran cómo configurar correctamente un log de error y adjuntar la stack trace necesaria en la error.stack del log.
Si ya estás enviando stack traces a Datadog, pero no están en error.stack, puedes configurar una reasignación de log genérica para reasignar la stack trace al atributo correcto en Datadog.
Para configurar fragmentos de código en línea en las incidencias, configura la integración del código fuente. Añadir fragmentos de código en el rastreo de errores para logs no requiere APM; las etiquetas de enriquecimiento y el repositorio vinculado es el mismo para ambos.
Para activar el rastreo de errores, los logs deben incluir los dos elementos siguientes:
un campo error.type o error.stack
un nivel de estado de ERROR, CRITICAL, ALERT, o EMERGENCY
El resto de atributos enumerados a continuación son opcionales, pero su presencia mejora la agrupación de errores.
Los atributos específicos tienen una pantalla de interfaz de usuario dedicada dentro de Datadog. Para activar estas funcionalidades para el rastreo de errores, utiliza los siguientes nombres de atributos:
Atributo
Descripción
error.stack
Stack trace correspondiente
error.message
Mensaje de error contenido en la stack trace
error.kind
El tipo o clase de un error (por ejemplo, “Exception” u “OSError”)
Nota: De forma predeterminada, los pipelines de integración intentan reasignar parámetros de bibliotecas de logging predeterminados a esos atributos específicos y repartir stack traces o hacer un seguimiento para extraer automáticamente error.message y error.kind.
Para registrar una excepción capturada por ti mismo, puedes utilizar opcionalmente:
varlog=newLoggerConfiguration().WriteTo.File(newJsonFormatter(renderMessage:true),"log.json").Enrich.WithExceptionDetails().CreateLogger();try{// ...}catch(Exceptionex){// pass exception as first argument of log calllog.Error(ex,"an exception occurred");}
Para registrar una excepción capturada por ti mismo, puedes utilizar opcionalmente:
privatestaticLoggerlog=LogManager.GetCurrentClassLogger();staticvoidMain(string[]args){try{// ...}catch(Exceptionex){// pass exception as second argument of log calllog.ErrorException("an exception occurred",ex);}}
Para registrar una excepción capturada por ti mismo, puedes utilizar opcionalmente:
classProgram{privatestaticILoglogger=LogManager.GetLogger(typeof(Program));staticvoidMain(string[]args){try{// ...}catch(Exceptionex){// pass exception as second argument of log calllog.Error("an exception occurred",ex);}}}
Para registrar una excepción capturada manualmente, también puedes utilizar:
Loggerlogger=LogManager.getLogger("HelloWorld");try{// ...}catch(Exceptione){// pass exception as last argument of log calllogger.error("an exception occurred",e)}
Para registrar una excepción capturada manualmente, también puedes utilizar:
Loggerlogger=LoggerFactory.getLogger(NameOfTheClass.class);try{// ...}catch(Exceptione){// pass exception as last argument of log calllogger.error("an exception occurred",e)}
Si utilizas Lograge, también puedes configurarlo para que envíe logs de error formateados:
Rails.application.configuredojsonLogger=Logger.new(STDOUT)# STDOUT o archivo según la configuración de tu agentjsonLogger.formatter=JsonWithErrorFieldFormatter.new# Reemplaza Rails por el registrador TaggedLogging por defecto con uno nuevo con el formateador json.# TaggedLogging no es compatible con mensajes con formato json más complejosconfig.logger=jsonLogger# Lograge configconfig.lograge.enabled=trueconfig.lograge.formatter=Lograge::Formatters::Raw.new# Desactiva la coloración de logconfig.colorize_logging=false# Configura el registro de excepciones en los campos correctosconfig.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