Das native Protokollmodul von Golang kann die Anforderungen nicht erfüllen, und Open-Source-Pakete von Drittanbietern reichen nicht vollständig aus. Es ist bekannt, dass Logrus, das viele Benutzer hat, keine Rotationsfunktion hat. Für Betrieb und Wartung hoffen wir natürlich, dass die Protokollverarbeitung einfach, praktisch und ausreichend ist. Für die Implementierung von Logrotate ist kein zusätzliches Pass-Through-System erforderlich.
1. Nachfrage
Auf der Nachfrageseite gibt es mehrere Hauptaspekte: (Empfohlenes Lernen: go )
Einerseits ist es auf jeden Fall notwendig, eine Rotationsfunktion zu haben und die Anzahl der aufbewahrten Protokollkopien zu begrenzen. Ob nach Dateigröße, Tag oder Stunde geschnitten werden soll, können wir besprechen.
Wenn andererseits die Protokollebene dynamisch angepasst werden kann, ist es für das Protokoll praktisch, das reguläre Protokoll zu schließen. Während des Online-Debuggens kann die Protokollebene dynamisch gesenkt werden und weitere Debug-Protokolle können gedruckt werden.
2. Forschung
Es gibt derzeit mehrere Hauptthemen:
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星。
Ein ehemaliger Kollege hat basierend darauf geschrieben auf log15 Sekundäre Kapselung, aber das Paket log15.v2/ext ist nicht leicht zu verstehen.
github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。
Zusammenfassend lässt sich sagen, dass ngaut besser zum Erlernen und Verstehen des Verpackungsprozesses geeignet ist. Basierend auf Logrus ist es eine zuverlässigere Wahl. Die unterste Ebene erfordert die von anderen Paketen implementierte Schneidfunktion.
3. Funktionsdesign
Hauptpunkte:
Verwenden Sie Logrus, um die Protokollierungsfunktion abzuschließen.
Das Schneiden von Protokollen muss abgeschlossen sein und historische Protokolle müssen komprimiert werden.
Hot-Updates auf Supportebene werden bereitgestellt, indem auf Probleme im Go-Code verwiesen wird.
Das obige ist der detaillierte Inhalt vonSo entwerfen Sie ein Golang-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!