Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
Avec notre agent de langage Go , vous pouvez obtenir logs in context, qui vous permet de voir le log de votre application dans le contexte de vos autres données New Relic. Pour des informations générales sur cette fonctionnalité, consultez Logs en contexte APM.
Des modifications aux options de configuration de l'agent Go sont nécessaires pour utiliser les logs suivants dans le contexte de la fonctionnalité.
Pour la plupart des utilisateurs, l’utilisation du transfert automatique des logintégré à l’agent Go est la meilleure solution. Il est facile à configurer et fonctionne parfaitement pour la majorité des cas d’utilisation.
En utilisant cette option, votre log inclut span.id, trace.id, hostname, entity.guid et entity.name. Ces attributs lient votre log aux étendues, aux traces et à d'autres télémétries, ce qui facilite le dépannage. Renseignez-vous sur les limites du transfert de log .
Le transfert automatique des log d'application est désormais activé par défaut dans la version 3.20.0 de l'agent Go ou supérieur. Si vos applications utilisent ces versions d'agent Go, vous n'avez pas besoin de modifier vos options de configuration pour activer le transfert automatique des log .
Si vous utilisez une ancienne version de l'agent Go, vous devrez modifier sa configuration pour activer le transfert des log d'application :
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogForwardingEnabled(true),
)
Pour les utilisateurs ayant des besoins de logging plus personnalisés, ou les utilisateurs qui souhaitent envoyer plus de 10 000 logs par cycle de 60 secondes, ou 833 logs par cycle de 5 secondes, à New Relic, nous vous recommandons de configurer manuellement le transfert de log . Après avoir configuré le redirecteur de logpour envoyer le log vers New Relic, modifiez la configuration de l'agent Go pour enrichir votre log. Enrichir le log signifie que le redirecteur de logajoute les données de contexte APM, notamment span.id, trace.id, hostname, entity.guid et entity.nameau log:
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogDecoratingEnabled(true),
)
Si vous utilisez l'agent Go version v3.20.0 ou supérieure, vous devez désactiver le transfert du log d'application afin d'éviter de dupliquer le log collecté par New Relic.
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogDecoratingEnabled(true),
newrelic.ConfigAppLogForwardingEnabled(false),
)
Installation d'un plugin de logs en contexte
Une fois votre agent configuré pour envoyer des logs à New Relic, installez un plugin de logs en contexte pour intrumenter votre bibliothèque de logging.
La bibliothèque logWriter est un io.Writer qui intègre automatiquement la dernière fonctionnalité New Relic Logs in Context dans la bibliothèque enregistreur standard Go. Suivez ces étapes pour l'installer dans votre application. Cette bibliothèque nécessite que la version installée de l'agent Go soit 3.19.1 ou supérieure.
Ajoutez le package logWriter à votre module.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/logWriter
Importez le package logWriter dans le fichier où vous initialisez votre enregistreur.
Créez un objet logWriter. Il faut lui transmettre un io.Writer valide, où le log sera écrit, et une application go-agent initialisée. L'exemple suivant écrit sur la sortie standard.
writer := logWriter.New(os.Stdout, newRelicApp)
Créez un objet enregistreur avec votre nouvel objet logWriter comme destination de sortie de l'enregistreur.
À ce stade, tout log écrit avec l'enregistreur créé sera géré par l'agent Go en fonction de vos paramètres de configuration de logging.
Transactions
Si vous souhaitez capturer le contexte d'une transaction, un nouvel objet logWriter et un nouvel objet enregistreur doivent être créés. Pour créer un nouvel objet logWriter pour votre transaction, utilisez les fonctions WithTransaction() ou WithContext() selon la manière dont la transaction est transmise à votre fonction. Ces fonctions créeront une nouvelle copie de l'objet logWriter d'origine avec le contexte de transaction inclus.
Si votre fonction reçoit un contexte encapsulé dans une transaction, utilisez la fonction WithContext() :
txnWriter := writer.WithContext(myWrappedContext)
Si votre fonction reçoit un pointeur de transaction, utilisez la fonction WithTransaction() :
Assurez-vous de toujours créer un nouvel enregistreur avec un nouveau logWriter pour chaque transaction. Cela évite la possibilité que des processus asynchrones accèdent au même objet enregistreur avec des informations contextuelles différentes.
L'outil logWriter est conçu pour échouer silencieusement. Pour activer les informations de débogage, appelez la méthode DebugLogging(true) sur votre objet logWriter. Lorsqu'une erreur se produit dans logWriter, il imprimera toujours votre ligne log non modifiée sur la première ligne. Lorsque DebugLogging est activé, il imprimera un message d'erreur sur la ligne suivante si une erreur se produit.
writer.DebugLogging(true)
La bibliothèque zerologWriter est un io.Writer qui intègre automatiquement la dernière fonctionnalité New Relic Logs in Context dans zerolog. Suivez ces étapes pour l'installer dans votre application. Cette bibliothèque nécessite que la version installée de go-agent soit 3.19.1 ou supérieure.
Ajoutez le package zerologWriter à votre module.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/zerologWriter
Importez le package zerologWriter dans le fichier où vous initialisez votre enregistreur zerolog.
Créez un objet zerologWriter. Il faut lui transmettre un io.Writer valide, où le log sera écrit, et une application go-agent initialisée. L'exemple suivant écrit sur la sortie standard.
writer := logWriter.New(os.Stdout, newRelicApp)
Créez un objet enregistreur avec votre nouvel objet zerologWriter comme destination de sortie de l'enregistreur.
logger := zerolog.New(writer)
À ce stade, tout log écrit avec l'enregistreur créé sera géré par l'agent Go en fonction de vos paramètres de configuration de logging.
Transactions
Si vous souhaitez capturer le contexte d'une transaction, un nouvel objet zerologWriter et un nouvel objet enregistreur doivent être créés. Pour créer un nouvel objet zerologWriter pour votre transaction, utilisez les fonctions WithTransaction() ou WithContext() selon la manière dont la transaction est transmise à votre fonction. Ces fonctions créeront une nouvelle copie de l'objet zerologWriter d'origine avec le contexte de transaction inclus.
Si votre fonction reçoit un contexte encapsulé dans une transaction, utilisez la fonction WithContext() :
txnWriter := writer.WithContext(myWrappedContext)
Si votre fonction reçoit un pointeur de transaction, utilisez la fonction WithTransaction() :
Assurez-vous de toujours créer un nouvel enregistreur avec un nouveau zerologWriter pour chaque transaction. Cela évite la possibilité que des processus asynchrones accèdent au même objet enregistreur avec des informations contextuelles différentes.
txnLogger := logger.Output(txnWriter)
Dépannage
L'outil zerologWriter est conçu pour échouer silencieusement. Pour activer les informations de débogage, appelez la méthode DebugLogging(true) sur votre objet zerologWriter. Lorsqu'une erreur se produit dans zerologWriter, il imprimera toujours votre ligne log non modifiée sur la première ligne. Lorsque DebugLogging est activé, il imprimera un message d'erreur sur la ligne suivante si une erreur se produit.
writer.DebugLogging(true)
Le plugin nrlogrus permet l'ingestion automatique des logs en contexte avec le framework de logging logrus. Une fois votre application configurée pour l'utiliser, l'agent Go ingérera automatiquement tout log écrit dans logrus. Cela nécessite la version 3.18.0 ou supérieure de l'agent Go.
Ajoutez le package nrlogrus à votre module.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrlogrus
Importez le package nrlogrus dans le fichier où vous initialisez votre enregistreur logrus.
Configurer et créer un nouveau formateur nrlogrus. Il faut passer une application valide et un formateur logrus valide. Le formateur transmis déterminera l'apparence du log qui sera écrit.
Définissez le formateur de votre enregistreur sur le formateur nrlogrus nouvellement créé.
log := logrus.New()
log.SetFormatter(nrlogrusFormatter)
À ce stade, tout log écrit avec l'enregistreur créé sera géré par l'agent Go en fonction de vos paramètres de configuration de logging.
Transactions
Lorsque vous instrumentez un log à l'intérieur d'une transaction, vous devez transmettre cette transaction à logrus en tant que contexte. Cela créera un nouvel objet enregistreur pour cette transaction qui lie le log géré par l'agent à la transaction et aux intervalles dans lesquels ils se sont produits.
Si vous avez un contexte qui contient une transaction :
txnLogger := log.WithContext(yourWrappedContext)
Sinon, vous pouvez créer un contexte et le transmettre à logrus :
Le plugin nrzap permet l'ingestion automatique des logs en contexte avec le framework de logging Zap. Une fois votre application configurée pour l'utiliser, le go-agent ingérera automatiquement tout log écrit dans Zap. Cela nécessite que la version de go-agent installée soit 3.22.1 ou supérieure.
Ajoutez le package nrzap à votre module.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrzap
Importez le package nrzap dans le fichier où vous initialisez votre enregistreur Zap.
Configurez et créez un nouvel objet principal Zap pour le logging de vos applications. Étant donné que l'objet principal n'a jamais besoin de changer et doit uniquement être encapsulé, il est recommandé de conserver un pointeur vers cet objet disponible afin de pouvoir le réutiliser pour créer des cœurs Zap encapsulés plus efficacement.
Enveloppez l'objet principal Zap pour capturer et envoyer le log à New Relic. Notez que tant que la fonction wrap reçoit un noyau Zap valide, le noyau qu'elle renvoie sera valide, même si une erreur est renvoyée. Pour cette raison, il est important de vérifier le type d’erreur.
Lorsque vous instrumentez un log à l'intérieur d'une transaction, vous devrez créer un nouveau noyau Zap et un enregistreur. Cela peut être fait en appelant la fonction WrapTransactionCore() .
txn := app.StartTransaction("nrzap example transaction")
Le plugin nrslog permet l'ingestion automatique de logs en contexte avec le framework standard de la bibliothèque slog. Une fois votre application configurée pour l'utiliser, l'agent Go ingérera automatiquement tout log écrit avec votre enregistreur slog encapsulé. Cela nécessite la version 3.30.0 ou supérieure de l'agent Go.
Ajoutez le package nrslog à votre module.
bash
$
go get github.com/newrelic/go-agent/v3/integrations/logcontext-v2/nrslog
Importez le package nrslog dans le fichier où vous initialisez votre enregistreur slog.
Configurer et créer un nouveau gestionnaire nrslog. Il faut lui transmettre un pointeur d'application New Relilc valide, un io.Writer et un pointeur vers un objet slog.HandlerOptions. Les fonctions pratiques sont regroupées dans nrslog pour intrumenter automatiquement les gestionnaires de texte et json fournis avec slog. Dans cet exemple, nous allons envelopper slog.TextHandler.
Créez un nouvel enregistreur avec votre gestionnaire instrumenté.
logger := slog.New(instrumentedTextHandler)
À ce stade, tout log écrit avec ce nouvel enregistreur sera géré par l'agent Go en fonction de vos paramètres de configuration de logging.
Transactions
Lorsque vous instrumentez un log à l'intérieur d'une transaction, vous devez transmettre cette transaction à nrslog. La meilleure façon de procéder est de le transmettre à l’intérieur d’un contexte à slog. Si vous avez un contexte qui contient une transaction :
Ce document vous a-t-il aidé lors de votre installation ?
Sécurisez vos données
Votre log peut inclure des informations sensibles protégées par la loi HIPAA ou d’autres protocoles de conformité. Par défaut, nous masquons les modèles de numéros qui semblent correspondre à des éléments tels que des cartes de crédit ou des numéros de sécurité sociale, mais vous devrez peut-être hacher ou masquer des informations supplémentaires.
Pour plus d'informations, consultez notre documentation sur l'expression d'obfuscation et les règles. Vous pouvez hacher ou masquer vos données log en utilisant l'interface utilisateur de New Relic ou en utilisant NerdGraph, notre API GraphQL .
Quelle est la prochaine étape ?
Après avoir configuré logs dans le contexte, tirez le meilleur parti de vos données de logging :
Obtenez une visibilité plus approfondie sur les données de performances de votre application et de votre plateforme en transmettant vos logs à notre agent d'infrastructure. Consultez vos logs d’infrastructure dans l’interface utilisateur.