Existe-t-il un bon wrapper disponible pour la journalisation par niveau dans golang? Si non, comment dois-je procéder pour en implémenter un moi-même?
Ce que je veux est assez simple. Je veux quelques fonctions, par exemple.
log.Error()
log.Info()
etc qui affiche leurs sorties sur stdout et les enregistre dans un fichier journal (basé sur le niveau attribué au programme en tant qu'argument en ligne de commande) . Comment implémenter ce wrapper?
Quelques suggestions supplémentaires, maintenant que les réponses existantes sont assez anciennes:
Jetez un coup d'oeil à http://cgl.tideland.biz et là au paquet "applog". Ça marche comme ça.
PS: L'ensemble du CGL est actuellement retravaillé et sera bientôt publié avec de nouvelles fonctionnalités, mais sous un nom différent. ;)
Uber-go/Zap : Connexion rapide, structurée et nivelée Go
stdlog correspond exactement à vos besoins:
log := stdlog.GetFromFlags()
log.Info("Connecting to the server...")
log.Errorf("Connection failed: %q", err)
https://github.com/hashicorp/logutils J'ai trouvé cela très facile à utiliser et vous n'avez même pas besoin de changer les appels de méthode en log.Printf
de la bibliothèque std.
J'ai ajouté la prise en charge du niveau de journalisation au package de journalisation Go intégré. Vous pouvez trouver mon code ici:
https://github.com/gologme/log
Outre la prise en charge d'Info, Warn et Debug, les utilisateurs peuvent également définir leurs propres niveaux de journalisation arbitraires. Les niveaux de journalisation sont activés et désactivés individuellement. Cela signifie que vous pouvez activer les journaux de débogage sans tout obtenir le reste.