Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Con nuestro agente de idioma Go, puede obtener logs in context, que le permite ver el registro de su aplicación en el contexto de sus otros datos New Relic . Para obtener información general sobre esta característica, consulte logs en el contexto APM .
Se necesitan modificaciones en las opciones de configuración del agente Go para poder utilizar la siguiente característica de logs en el contexto.
Para la mayoría de los usuarios, emplear el reenvío automático de registros integrado en el agente Go es la mejor solución. Es fácil de configurar y funciona muy bien para la mayoría de los casos de uso.
Al emplear esta opción, sus registros incluirán span.id, trace.id, hostname, entity.guid y entity.name. Estos atributos vinculan sus registros a tramos, trazas y otra telemetría, lo que facilita la resolución de problemas. Obtenga información sobre las limitaciones del reenvío de registros.
El reenvío automático de registros de aplicaciones ahora está habilitado de forma predeterminada en Go agente versión 3.20.0 o mas alto. Si su aplicación utiliza estas versiones de Go agente, no necesita cambiar sus opciones de configuración para habilitar el reenvío de registros automático.
Si está utilizando una versión anterior de Go agente, deberá modificar su configuración para habilitar el reenvío de registros de aplicaciones:
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogForwardingEnabled(true),
)
Para los usuarios con necesidades de registro más personalizadas, o usuarios que desean enviar más de 10 000 registros por ciclo de 60 segundos, o 833 registros por ciclo de 5 segundos, a New Relic, recomendamos que configure manualmente el reenvío de registros. Luego de configurar el reenviador de registros para enviar registros a New Relic, modifique la configuración del agente Go para enriquecer sus registros. Enriquecer los registros significa que el reenviador de registros agrega los datos de contexto APM , incluidos span.id, trace.id, hostname, entity.guid y entity.nameal registro:
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogDecoratingEnabled(true),
)
Si está utilizando Go agente versión v3.20.0 o superior, debe desactivar el reenvío de registros de aplicaciones para evitar duplicar el registro recopilado por New Relic.
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogDecoratingEnabled(true),
newrelic.ConfigAppLogForwardingEnabled(false),
)
Instalación de un complemento de contexto de inicio de sesión
Una vez que su agente esté configurado para enviar registros a New Relic, instale un complemento de logs en el contexto para instrumentar su biblioteca de registros.
La biblioteca logWriter es un io.Writer que integra automáticamente la última característica New Relic Logs in Context en el logger de biblioteca estándar go. Siga estos pasos para instalarlo en su aplicación. Esta biblioteca requiere que la versión instalada del agente Go sea 3.19.1 o superior.
Agregue el paquete logWriter a su módulo.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/logWriter
Importe el paquete logWriter en el archivo donde inicializa su logger.
Cree un objeto logWriter. Se debe pasar un io.Writer válido, que es donde se escribirá el registro, y una aplicación go-agente inicializada. El siguiente ejemplo escribe en salida estándar.
writer := logWriter.New(os.Stdout, newRelicApp)
Cree un objeto logger con su nuevo objeto logWriter como destino de salida del logger.
En este punto, cualquier log escrito con el logger creado será manejado por go-agente según su configuración de registro.
Transacción
Si desea capturar el contexto de una transacción, se debe crear un nuevo objeto logWriter y un objeto logger . Para crear un nuevo objeto logWriter para su transacción, utilice las funciones WithTransaction() o WithContext() dependiendo de cómo se pasa la transacción a su función. Estas funciones harán una nueva copia del objeto logWriter original con el contexto de transacción incluido.
Si su función recibe un contexto envuelto con una transacción, use la función WithContext():
txnWriter := writer.WithContext(myWrappedContext)
Si su función recibe un puntero de transacción, utilice la función WithTransaction():
Asegúrese de crear siempre un nuevo logger con un nuevo logWriter para cada transacción. Esto evita la posibilidad de que procesos asincrónicos accedan al mismo objeto logger con diferente información contextual.
La herramienta logWriter está diseñada para fallar silenciosamente. Para habilitar la información de depuración, llame al método DebugLogging(true) en su objeto logWriter. Cuando ocurre un error en logWriter, siempre imprimirá su línea log sin editar en la primera línea. Cuando DebugLogging está habilitado, imprimirá un mensaje de error en la siguiente línea si ocurre un error.
writer.DebugLogging(true)
La biblioteca zerologWriter es una io.Writer que integra automáticamente la característica New Relic Logs in Context más reciente en zerolog. Siga estos pasos para instalarlo en su aplicación. Esta biblioteca requiere que la versión instalada de go-agente sea 3.19.1 o superior.
Agregue el paquete zerologWriter a su módulo.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/zerologWriter
Importe el paquete zerologWriter en el archivo donde inicializa su logger zerolog.
Cree un objeto zerologWriter. Se debe pasar un io.Writer válido, que es donde se escribirá el registro, y una aplicación go-agente inicializada. El siguiente ejemplo escribe en salida estándar.
writer := logWriter.New(os.Stdout, newRelicApp)
Cree un objeto logger con su nuevo objeto zerologWriter como destino de salida del logger.
logger := zerolog.New(writer)
En este punto, cualquier log escrito con el logger creado será manejado por go-agente según su configuración de registro.
Transacción
Si desea capturar el contexto de una transacción, se debe crear un nuevo objeto zerologWriter y un objeto logger . Para crear un nuevo objeto zerologWriter para su transacción, utilice las funciones WithTransaction() o WithContext() dependiendo de cómo se pasa la transacción a su función. Estas funciones harán una nueva copia del objeto zerologWriter original con el contexto de transacción incluido.
Si su función recibe un contexto envuelto con una transacción, use la función WithContext():
txnWriter := writer.WithContext(myWrappedContext)
Si su función recibe un puntero de transacción, utilice la función WithTransaction():
Asegúrese de crear siempre un nuevo logger con un nuevo zerologWriter para cada transacción. Esto evita la posibilidad de que procesos asincrónicos accedan al mismo objeto logger con diferente información contextual.
txnLogger := logger.Output(txnWriter)
Resolución de problemas
La herramienta zerologWriter está diseñada para fallar silenciosamente. Para habilitar la información de depuración, llame al método DebugLogging(true) en su objeto zerologWriter. Cuando ocurre un error en zerologWriter, siempre imprimirá su línea log sin editar en la primera línea. Cuando DebugLogging está habilitado, imprimirá un mensaje de error en la siguiente línea si ocurre un error.
writer.DebugLogging(true)
El complemento nrlogrus permite la ingesta automática de logs en el contexto con el framework de registro de logrus. Una vez que su aplicación esté configurada para usarla, Go agente absorberá automáticamente cualquier registro escrito en logrus. Esto requiere la versión 3.18.0 o superior del agente Go.
Agregue el paquete nrlogrus a su módulo.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrlogrus
Importe el paquete nrlogrus en el archivo donde inicializó su logger logrus.
Configure y cree un nuevo formateador nrlogrus. Se debe pasar una aplicación válida y cualquier formateador Logrus válido. El formateador aprobado determinará la apariencia del registro que se escriba.
Configure el formateador de su logger en el formateador nrlogrus recién creado.
log := logrus.New()
log.SetFormatter(nrlogrusFormatter)
En este punto, cualquier log escrito con el logger creado será manejado por go-agente según su configuración de registro.
Transacción
Cuando instrumente el registro dentro de una transacción, debe pasar esa transacción a logrus como contexto. Esto creará un nuevo objeto logger para esa transacción que vincula el registro manejado por el agente con la transacción y los períodos en los que ocurrieron.
Si tiene un contexto que contiene una transacción:
txnLogger := log.WithContext(yourWrappedContext)
De lo contrario, puedes crear un contexto y pasarlo a logrus:
El complemento nrzap permite la ingesta automática de logs en el contexto con el framework de registro Zap. Una vez que su aplicación esté configurada para usarla, go-agente absorberá automáticamente cualquier registro escrito en Zap. Esto requiere que la versión de go-agente instalada sea 3.22.1 o superior.
Agregue el paquete nrzap a su módulo.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrzap
Importe el paquete nrzap en el archivo donde inicializa su logger Zap.
Configure y cree un nuevo objeto central Zap para el registro de su aplicación. Debido a que el objeto central nunca necesita cambiar y solo necesita encapsularse, es una buena práctica mantener disponible un puntero a este objeto para poder reutilizarlo para crear núcleos Zap envueltos de manera más eficiente.
Envuelva el objeto central de Zap para capturar y enviar el registro a New Relic. Tenga en cuenta que siempre que a la función de ajuste se le pase un núcleo Zap válido, el núcleo que devuelve será válido, incluso si se devuelve un error. Por este motivo, es importante comprobar el tipo de error.
Cuando instrumente el registro dentro de una transacción, necesitará crear un nuevo núcleo Zap y logger. Esto se puede hacer llamando a la función WrapTransactionCore() .
txn := app.StartTransaction("nrzap example transaction")
El complemento nrslog permite la ingesta automática de logs en el contexto con el framework de trabajo estándar de biblioteca. Una vez que su aplicación esté configurada para usarla, Go agente absorberá automáticamente cualquier registro escrito con su logger de slog empaquetado. Esto requiere la versión 3.30.0 o superior del agente Go.
Agregue el paquete nrslog a su módulo.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrslog
Importe el paquete nrslog en el archivo donde inicializa su logger de slog.
Configure y cree un nuevo controlador nrslog. Se debe pasar un puntero de aplicación New Relilc válido, un io.Writer y un puntero a un objeto slog.HandlerOptions. Las funciones de conveniencia están empaquetadas en nrslog para instrumentar automáticamente los controladores de texto y json que vienen de fábrica en slog. En este ejemplo, envolveremos slog.TextHandler.
Cree un nuevo logger con su controlador instrumentado.
logger := slog.New(instrumentedTextHandler)
En este punto, cualquier log escrito con este nuevo logger será manejado por go-agente según su configuración de registro.
Transacción
Al instrumentar el log dentro de una transacción, debes pasar esa transacción a nrslog. La forma preferida de hacerlo es pasándolo dentro de un contexto para trabajar. Si tiene un contexto que contiene una transacción:
Su registro puede incluir información confidencial protegida por HIPAA u otros protocolos de cumplimiento. De forma predeterminada, ofuscamos los patrones numéricos que parecen corresponder a elementos como tarjetas de crédito o números de Seguro Social, pero es posible que deba aplicar hash o enmascarar información adicional.
Para más información, consulta nuestra documentación sobre expresión de ofuscación y reglas. Puede hash o enmascarar sus log datos utilizando la New Relic UI o utilizando NerdGraph, nuestra GraphQL.API
¿Que sigue?
Después de configurar el inicio de logs en el contexto, aproveche al máximo sus datos de registro:
Explore los datos de registro en su plataforma con nuestra UI de logs.
Vea su logs en el contexto del rendimiento de su aplicación en la APM UI. Solucionar errores con rastreo distribuido, rastreo del stack, registro de aplicación y más.
Obtenga una visibilidad más profunda de los datos de rendimiento de su aplicación y de su plataforma enviando sus logs a nuestro agente de infraestructura. Revise su log de infraestructura en la UI.