À propos du projet
Logrus est un journaliseur structuré pour Go, conçu pour être compatible avec l'API du journaliseur de la bibliothèque standard. Il est en mode maintenance : le projet se concentre sur la sécurité, les corrections de bogues et les améliorations de performance, avec de nouvelles fonctionnalités limitées au travail d'interopérabilité tel que log/slog de Go. Le README note que la journalisation structurée est désormais largement disponible en Go via des alternatives comme Zerolog, Zap et Apex.
Capacités principales :
- Journalisation par niveaux avec sept niveaux : Trace, Debug, Info, Warning, Error, Fatal et Panic. Un journaliseur peut être configuré pour n'émettre que des entrées à un niveau de gravité choisi ou supérieur.
- Champs structurés via WithField et WithFields, encourageant une journalisation par paires clé-valeur découvrable plutôt que de longs messages formatés. Les entrées incluent automatiquement time, msg et level.
- Champs par défaut : WithFields renvoie une logrus.Entry qui peut être réutilisée pour attacher des champs communs tels que request_id ou user_ip sur plusieurs instructions de journalisation.
- Formatteurs : TextFormatter intégré (codé en couleur lorsque la sortie est un TTY, sinon texte brut compatible logfmt) et JSONFormatter pour l'analyse machine par des outils comme Logstash ou Splunk. Les options incluent ForceColors, DisableColors, DisableLevelTruncation, PadLevelText et FullTimestamp. Les formatteurs personnalisés implémentent l'interface Formatter.
- Hooks : attachez un comportement aux niveaux de journalisation, par exemple envoyer des erreurs à des traceurs d'exceptions, transmettre à StatsD, ou écrire dans syslog. Des hooks intégrés existent et des hooks tiers sont répertoriés dans le wiki du projet.
- Rapport d'appelant : SetReportCaller(true) ajoute la méthode appelante comme champ, avec une surcharge mesurable notée dans le README.
- Intégration io.Writer : logger.Writer() expose le journaliseur comme un io.Writer, permettant de rediriger la sortie du journaliseur de la bibliothèque standard à travers les formatteurs et hooks de Logrus.
- Support de test : le paquet de hooks de test fournit des helpers NewLocal, NewGlobal et NewNullLogger pour vérifier les messages de journalisation dans les tests.
- Gestionnaires Fatal : RegisterExitHandler enregistre des fonctions exécutées avant os.Exit(1) sur les messages de niveau fatal, utiles pour un arrêt gracieux.
- Sécurité des threads : Logger est protégé par mutex par défaut ; SetNoLock() peut désactiver le verrouillage lorsque les hooks et la sortie sont déjà thread-safe.
La rotation des journaux n'est volontairement pas incluse ; le README recommande des outils externes tels que logrotate. La bibliothèque n'a pas de notion intégrée d'environnement, donc la sélection du formatteur et des hooks par environnement est laissée à l'application.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.