In dieser Lektion zum Logrus-Paket in Golang untersuchen wir verschiedene Beispiele dafür, wie effektiv die Protokollierung in Go durchgeführt werden kann, und sehen, wie wichtig Protokolle in der Programmiersprache Go sind. Wir fangen jetzt an.
Beginnend mit Go
Hier ist die Verzeichnisstruktur, die ich für mein Hello World-Programm erstellt habe:
Hier ist das von uns erstellte Programm:
Hauptpaket"fmt" importieren
func main()
fmt.Printf("Hallo Welt.\n")
Wir können das obige Programm mit dem folgenden Befehl ausführen:
geh laufen hallo.gehenSobald wir diesen Befehl ausführen, sehen Sie hier die Ausgabe:
Das sieht jetzt gut aus. Kommen wir zu unserer Hauptagenda.
Logrus-Paket in Golang
Um das Logrus-Paket im Go-Programm zu verwenden, müssen wir erhalten es. Führen Sie den folgenden Befehl aus:
geh und hol -t github.com/Sirupsen/logrusWenn wir dieses Paket in IntelliJ verwenden, sehen wir diesen Fehler, den wir mit einem Klick beheben können:
Sobald Sie das Paket erhalten haben, können wir es verwenden. Beginnen wir mit einem einfachen Programm.
Einfache Protokollierung mit Logrus
Wir beginnen mit einem sehr einfachen Beispiel für die Protokollierung auf INFO-Ebene. Die Protokollierung kann mit String-Nachrichten und Metadaten in Form von Schlüssel-Wert-Paaren erfolgen, die gleich aussehen.
Hauptpaketimportieren (
log "github".com/Sirupsen/logrus"
)
func main()
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
"Hilfe": 200,
).Info("Golang-Profi")
Wenn wir dieses Programm ausführen, sehen wir die folgende Ausgabe:
Das ist sowohl nützlich als auch bunt!
Verschiedene Protokollierungsebenen
Jetzt werden wir ein weiteres Beispiel ausprobieren, das die Verwendung verschiedener Logging-Levels zeigt, die in Logrus und im Allgemeinen verfügbar sind. Sie sind:
- Die Info
- Warnung
- Tödlich
- Debuggen
- Panik
Versuchen wir, ein Programm zu erstellen und zu sehen, wie sich diese Protokollebenen unterscheiden, wenn sie in unserem Programm erscheinen:
Hauptpaketimportieren (
log "github".com/Sirupsen/logrus"
)
func main()
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
).Info("Golang pro INFO-Nachricht")
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
).Warn("Golang pro WARN-Meldung")
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
).Fatal("Golang-Pro-FATAL-Nachricht")
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
).Panik("Golang pro PANIC-Nachricht")
Log.WithFields(log.Felder
"website": "linuxhint.com",
"super": 100,
).Debug("Golang pro DEBUG-Nachricht")
Wenn wir dieses Programm ausführen, sehen wir die folgende Ausgabe:
Etwas bemerkt? Die Log-Anweisungen nach der Fatal-Anweisung erscheinen nicht einmal in unserer Ausgabe. Dies liegt daran, dass die Programmausführung in Golang stoppt, sobald ein schwerwiegender Fehler empfangen wird.
Lassen Sie uns die Reihenfolge dieser Anweisungen ändern und prüfen, ob auch einige Änderungen in der Ausgabe beobachtet werden:
Diesmal reagierte sogar das Panic Log-Level auf die gleiche Weise, aber die Ausgabe war sehr unterschiedlich und detailliert.
Mit Panic-Log-Level stellen Sie sicher, dass genügend Informationen über den Host-Rechner auch in der Ausgabe in der Konsole gedruckt werden, damit die Arbeit debuggbar ist.
Einfachere Möglichkeit, Protokolle zu erstellen
In den obigen Anrufen waren die Protokolle ziemlich detailliert und auch mit Metadaten. Es gibt eine einfachere Möglichkeit, Ihre Nachrichten zu protokollieren. Versuchen wir es jetzt:
Hauptpaketimportieren (
log "github".com/Sirupsen/logrus"
)
func main()
Log.Debug("Daten hier debuggen.")
Log.Info("Nachrichten für allgemeine Informationen")
Log.Warn("Sie sollten sich diese Warnung ansehen!")
Log.Error("Etwas ist fehlgeschlagen, aber das Programm wird fortgesetzt.")
// Ruft os auf.Beenden(1) nach der Anmeldung
Log.Fatal("Ich gehe.")
// Ruft panic() nach dem Loggen auf
Log.Panic("Ich werde nicht gedruckt :(")
Hier die Ausgabe für das Programm:
Das Verhalten beim Loggen war das gleiche, aber diesmal waren sie einfach in nur einer Zeile zu erstellen.
Fazit
In diesem Beitrag haben wir einfache, aber nützliche Beispiele untersucht, wie wir mit dem Logrus-Paket mit Golang wichtige Nachrichten mit unterschiedlichem Schweregrad und Ausführlichkeit in unseren Anwendungen protokollieren können.