Pour envoyer vos logs Go à Datadog, activez la journalisation au sein d’un fichier et suivez ce fichier avec votre Agent Datadog. Vous pouvez utiliser la configuration suivante aveclogrus, une bibliothèque de journalisation open source.
Datadog vous recommande fortement de configurer votre bibliothèque de journalisation de façon à générer vos logs au format JSON. Vous n’aurez ainsi pas besoin de créer de règles de parsing personnalisées.
Pour une configuration Go classique, ouvrez un fichier main.go et collez le code suivant :
packagemainimport(log"github.com/sirupsen/logrus")funcmain(){// utiliser le JSONFormatteur
log.SetFormatter(&log.JSONFormatter{})// enregistrer comme d'habitude un événement avec logrus
log.WithFields(log.Fields{"string":"foo","int":1,"float":1.1}).Info("Mon premier événement de golang à stdout")}
Vous pouvez ajouter des métadonnées à un log en fournissant l’objet JSON à afficher dans l’événement de log.
Ces métadonnées peuvent correspondre à hostname, username, customers, metric ou à toute autre information facilitant de dépannage et la compréhension du fonctionnement de votre application Go.
packagemainimport(log"github.com/sirupsen/logrus")funcmain(){// utiliser JSONFormatter
log.SetFormatter(&log.JSONFormatter{})// enregistrer un événement avec logrus
log.WithFields(log.Fields{"string":"foo","int":1,"float":1.1}).Info("Mon premier événement de golang à stdout")// Pour les métadonnées, un schéma récurrent consiste à réutiliser les champs entre les déclarations de journalisation en réutilisant
contextualizedLog:=log.WithFields(log.Fields{"hostname":"staging-1","appname":"foo-app","session":"1ce3f6v"})contextualizedLog.Info("Événement simple avec des métadonnées globales")}
Si la solution APM est activée pour cette application, vous pouvez améliorer la corrélation entre vos logs et vos traces d’application en suivant la documentation relative à la journalisation Go pour APM. Cela vous permet d’ajouter automatiquement des identifiants de trace et de span à vos logs.
Nommez le logger avec un nom qui correspond à la fonctionnalité ou au service concerné.
Utilisez les niveaux de log DEBUG, INFO, WARNING et FATAL. Dans Datadog, l’adresse FATAL de Go correspond à un niveau de gravité de Emergency.
Commencez par enregistrer les informations les plus importantes. Développez l’exhaustivité de votre journalisation au fur et à mesure des itérations.
Utilisez des métadonnées pour ajouter du contexte à tous vos logs. Cela vous permet de rapidement filtrer les utilisateurs, les clients ou les attributs métiers capitaux.