Maison  >  Article  >  développement back-end  >  solution de journal Golang

solution de journal Golang

WBOY
WBOYoriginal
2023-05-16 14:59:12700parcourir

À mesure que la complexité des applications continue de croître, la journalisation devient de plus en plus importante. Les journaux peuvent aider les développeurs à identifier rapidement les problèmes et à les résoudre rapidement, tout en fournissant également des informations utiles sur l'utilisation des applications. Sur la base de ce besoin, divers langages de programmation fournissent des bibliothèques et des frameworks de journalisation. Golang ne fait pas exception. Dans cet article, nous explorerons la solution consistant à utiliser Golang pour écrire des journaux.

  1. Bibliothèque de journalisation standard

La bibliothèque de journalisation standard est la bibliothèque intégrée de Golang qui prend en charge la sortie formatée et le contrôle de niveau. Il fournit trois niveaux de journalisation : débogage, informations et erreurs. L'exemple de code pour utiliser cette bibliothèque est le suivant :

package main

import (
    "log"
)

func main() {
    log.Println("This is a default message")
    log.SetFlags(log.Ldate | log.Ltime | log.Llongfile)
    log.Println("This is a formatted message")
    log.SetPrefix("[MyProg]")
    log.Println("This is a prefixed message")
}

Dans le code ci-dessus, la fonction log.Println() est utilisée pour enregistrer les journaux. Par défaut, la journalisation sera effectuée sur la sortie standard. Le contenu du journal peut être défini via la fonction log.SetFlags(). Vous pouvez ajouter un préfixe à chaque message de journal à l'aide de la fonction log.SetPrefix().

L'avantage de cette bibliothèque est qu'elle est facile à utiliser et intégrée à Golang, elle ne nécessite donc aucun autre outil ou framework. Cependant, l’inconvénient de cette bibliothèque est qu’elle est moins flexible et ne répond pas bien aux besoins de l’application.

  1. logrus

logrus est une bibliothèque de journalisation Golang populaire avec de nombreuses fonctionnalités avancées. Il fournit plusieurs niveaux de journalisation : Trace, Debug, Info, Warn, Error, Fatal et Panic. Logrus prend également en charge la sortie vers plusieurs cibles, telles que des fichiers, des réseaux, des journaux système, etc. L'exemple de code pour utiliser cette bibliothèque est le suivant :

package main

import (
    "github.com/sirupsen/logrus"
    "os"
)

func main() {
    log := logrus.New()

    file, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY, 0666)
    if err == nil {
        log.Out = file
    } else {
        log.Info("Failed to log to file, using default stderr")
    }

    log.WithFields(logrus.Fields{
        "animal": "walrus",
        "size":   10,
    }).Info("A walrus appears")

    log.WithFields(logrus.Fields{
        "animal": "wombat",
        "size":   5,
    }).Warn("A wombat appears")
}

Dans le code ci-dessus, une instance logrus est créée à l'aide de la fonction logrus.New(). Ensuite, enregistrez-le dans un fichier et enregistrez deux messages de journal différents. Dans chaque message de journal, utilisez la fonction log.WithFields() pour ajouter des champs, puis utilisez les fonctions log.Info() et log.Warn() pour enregistrer les messages respectivement.

logrus est extrêmement flexible et évolutif, et fournit également de riches options de format de sortie pour la journalisation. Cependant, logrus s'appuie sur des bibliothèques tierces et doit être installé manuellement à l'aide de la commande go get.

  1. zap

Zap est largement considérée comme l'une des bibliothèques de journalisation Golang les plus rapides. Son objectif est de fournir une prise en charge d'une journalisation hautes performances tout en conservant une facilité d'utilisation. Il fournit une journalisation à plusieurs niveaux : Debug, Info, Warn, Error et DPanic. Zap propose également une journalisation structurée, ce qui signifie que les données peuvent être ajoutées aux messages du journal et formatées dans un format lisible et consultable. L'exemple de code pour utiliser cette bibliothèque est le suivant :

package main

import (
    "go.uber.org/zap"
)

func main() {
    logger, _ := zap.NewDevelopment()
    defer logger.Sync()

    logger.Info("Zap is awesome",
        zap.String("animal", "walrus"),
        zap.Int("size", 10),
    )

    logger.Warn("Watch out for the wombat",
        zap.String("animal", "wombat"),
        zap.String("location", "Australia"),
    )
}

Dans le code ci-dessus, la fonction zap.NewDevelopment() est utilisée pour créer une nouvelle instance Zap, puis enregistrer deux messages de journal différents. Dans chaque message de journal, ajoutez des données structurées à l'aide des fonctions zap.String() et zap.Int().

Les avantages de Zap sont ses hautes performances et sa facilité d'utilisation, ainsi que sa prise en charge des données structurées. Cependant, Zap s'appuie également sur des bibliothèques tierces, qui doivent être installées manuellement à l'aide de la commande go get.

  1. Conclusion

Golang fournit de nombreuses bibliothèques et frameworks de journalisation différents. La bibliothèque de journalisation standard est intégrée et fournit des fonctionnalités de journalisation de base. Logrus et zap sont des bibliothèques tierces populaires qui prennent en charge la journalisation structurée et à plusieurs niveaux et offrent une plus grande flexibilité et évolutivité. Le modèle de journalisation que vous choisissez dépend de divers facteurs, tels que les besoins de votre application et les besoins en performances. Par conséquent, les avantages et les inconvénients de chaque option doivent être soigneusement examinés et évalués pour trouver la solution la mieux adaptée à l’application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:format de commentaire golangArticle suivant:format de commentaire golang