Maison  >  Article  >  développement back-end  >  Comment concevoir un journal Golang

Comment concevoir un journal Golang

(*-*)浩
(*-*)浩original
2019-12-03 11:10:053561parcourir

Comment concevoir un journal Golang

Le module de journalisation natif de Golang ne peut pas répondre aux besoins, et les packages tiers open source ne sont pas totalement suffisants. Il est bien connu que Logrus, qui compte de nombreux utilisateurs, ne dispose pas de fonction de rotation. Pour l'exploitation et la maintenance, nous espérons bien entendu que le traitement des grumes sera simple, pratique et suffisant. Aucun système d'intercommunication supplémentaire n'est requis pour implémenter logrotate.

1. La demande

Du côté de la demande, il y a plusieurs aspects principaux : (Apprentissage recommandé : aller )

D'une part, il faut absolument avoir une fonction de rotation et limiter le nombre de copies de log conservées. Quant à savoir s'il faut couper par taille de fichier, par jour ou par heure, nous pouvons en discuter.

D'un autre côté, si le niveau de journalisation peut être ajusté dynamiquement, il sera pratique pour le journal de fermer le journal normal. Lors du débogage en ligne, le niveau de journalisation peut être abaissé dynamiquement. et davantage de journaux de débogage peuvent être imprimés.

2. Recherche

Il y en a plusieurs principales actuellement :

github.com/sirupsen/logrus。用户广泛,但明确表示不支持日志切割功能,建议通过hook走日志系统。
github.com/natefinch/lumberjack。支持以文件大小的方式切割日志。用户偏少。
gopkg.in/inconshreveable/log15.v2。比较老牌。
github.com/lestrrat-go/file-rotatelogs。基于小时数进行切割的小众包。
github.com/xiaomi-tc/log15。小米基于log15写的二次封装增加了切割功能。但只有2星。

Un ancien collègue a écrit en fonction sur l'encapsulation secondaire log15, mais le package log15.v2/ext n'est pas facile à comprendre.

github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。

Pour résumer, le ngaut est plus adapté pour apprendre et comprendre le processus d'emballage. Basé sur logrus, c'est un choix plus fiable. La couche inférieure nécessite la fonction de découpe implémentée par d'autres packages.

3. Conception fonctionnelle

Points principaux :

Utilisez logrus pour compléter la fonction de journalisation.

La coupe des journaux doit être terminée et les journaux historiques doivent être compressés

Mises à jour à chaud du niveau de support fournies en faisant référence aux problèmes rencontrés dans le code Go

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:Comment démarrer Golang IotaArticle suivant:Comment démarrer Golang Iota