In deze les over het Logrus-pakket in Golang zullen we verschillende voorbeelden bestuderen over hoe effectief Logging kan worden gedaan in Go en zien hoe belangrijk logbestanden zijn in de programmeertaal Go. We gaan nu aan de slag.
beginnend met Go
Hier is de directorystructuur die ik heb gemaakt voor mijn Hello World-programma:
Dit is het programma dat we hebben gemaakt:
pakket hoofdimporteer "fmt"
fun hoofd()
fmt.Printf("Hallo wereld.\n")
We kunnen het bovenstaande programma uitvoeren met de volgende opdracht:
ga rennen hallo.GaanZodra we deze opdracht hebben uitgevoerd, is hier de uitvoer die u zult zien:
Nou dat ziet er goed uit. Laten we naar onze hoofdagenda gaan.
Logrus-pakket in Golang
Om het Logrus-pakket in het Go-programma te gaan gebruiken, moeten we: krijgen het. Voer de volgende opdracht uit:
ga halen -t github.com/Sirupsen/logrusWanneer we dit pakket in IntelliJ gaan gebruiken, zien we deze fout die we met één klik kunnen oplossen:
Zodra je het pakket hebt ontvangen, kunnen we het gaan gebruiken!. Laten we beginnen met een eenvoudig programma.
Basisregistratie met Logrus
We beginnen met een heel eenvoudig voorbeeld van een INFO-niveau loggen. Loggen kan worden gedaan met String-berichten en metagegevens in de vorm van sleutel-waardeparen die er hetzelfde uitzien.
pakket hoofdimporteren (
log "github".com/Sirupsen/logrus"
)
fun hoofd()
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
"help": 200,
).Info("Golang pro")
Wanneer we dit programma uitvoeren, kunnen we de volgende uitvoer zien:
Dat is zowel handig als kleurrijk!
Verschillende logboekniveaus
Nu zullen we een ander voorbeeld proberen dat het gebruik laat zien van verschillende Logging-niveaus die beschikbaar zijn in Logrus en in het algemeen. Zij zijn:
- Info
- Waarschuwing
- Fataal
- Debuggen
- Paniek
Laten we proberen een programma te bouwen en kijken hoe deze logniveaus verschillen wanneer ze in ons programma verschijnen:
pakket hoofdimporteren (
log "github".com/Sirupsen/logrus"
)
fun hoofd()
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
).Info ("Golang pro INFO-bericht")
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
).Waarschuwen ("Golang pro WARN-bericht")
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
).Fatal ("Golang pro FATAL-bericht")
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
).Paniek ("Golang pro PANIEK bericht")
log.WithFields(log.Velden
"website": "linuxhint".kom",
"geweldig": 100,
).Debug ("Golang pro DEBUG-bericht")
Wanneer we dit programma uitvoeren, zien we de volgende uitvoer:
iets opgemerkt? De log-instructies na de Fatal-instructie verschijnen niet eens in onze uitvoer. Dit komt omdat zodra een fatale fout wordt ontvangen, de uitvoering van het programma stopt in Golang.
Laten we de volgorde van deze uitspraken wijzigen en controleren of er ook veranderingen in de uitvoer worden waargenomen:
Deze keer reageerde zelfs het Panic Log-niveau op dezelfde manier, maar de uitvoer was heel anders en gedetailleerd.
Met Panieklogboekniveau zorgt u ervoor dat voldoende informatie over de hostmachine ook wordt afgedrukt in de uitvoer in de console, zodat het werk debugbaar is.
Eenvoudigere manier om logboeken te maken
In bovenstaande oproepen waren logboeken behoorlijk gedetailleerd en ook met metadata. Er is een eenvoudigere manier om uw berichten te loggen. Laten we dit nu proberen:
pakket hoofdimporteren (
log "github".com/Sirupsen/logrus"
)
fun hoofd()
log.Debug("Debuggen van gegevens hier.")
log.Info("Berichten voor algemene info")
log.Warn("Je zou deze waarschuwing moeten bekijken!")
log.Error("Er is iets mislukt, maar het programma gaat door.")
// Oproepen os.Afsluiten(1) na inloggen
log.Fatal("Ik ga weg.")
// Roept panic() op na het loggen
log.Panic("Ik zal niet worden afgedrukt :(")
Hier is de uitvoer van het programma:
Het gedrag voor het loggen was hetzelfde, maar deze keer waren ze eenvoudig te maken in slechts één regel.
Conclusie
In dit bericht hebben we eenvoudige maar nuttige voorbeelden bestudeerd van hoe we belangrijke berichten met verschillende ernst en breedsprakigheid in onze applicaties kunnen loggen met behulp van het Logrus-pakket met Golang.