Înregistrarea este tehnica de păstrare a înregistrărilor pentru scopuri viitoare în ciclul de dezvoltare a software-ului. Înregistrarea este esențială, deoarece jurnalele ajută la depanare, diagnosticare, depanare și monitorizare a proiectelor.

Puteți utiliza înregistrarea în jurnal la diferite niveluri ale aplicațiilor dvs. pentru erori, avertismente, depanare și multe altele.

Conectare Go

Biblioteca standard Go conţine a Buturuga pachet bogat in functionalitate. Se ocupă de diferite niveluri de înregistrare și metode de bază legate de înregistrare de care veți avea nevoie pentru aplicația dvs. Însă Buturuga pachetul ar putea să nu fie cea mai bună alegere dacă aplicația dvs. este complexă și doriți să acordați prioritate productivității.

The Buturuga pachetul nu oferă funcționalitate pentru jurnalele structurate. Pachetele de jurnalizare structurate oferă funcționalități care simplifică și îmbunătățesc procesul de înregistrare. Ecosistemul Go găzduiește multe astfel de pachete.

1. Zap de la Uber

instagram viewer

Zap este un pachet de jurnalizare rapid, structurat și nivelat, creat de echipa open-source a Uber pentru scrierea jurnalelor în Go. Uber a construit pachetul Zap pentru a oferi o înregistrare mai performantă decât alte pachete din ecosistemul Go, inclusiv Buturuga pachet.

Există două loggere distincte în pachetul Zap. The Logger funcția gestionează cazurile critice de performanță. The SugaredLogger oferă mai multă flexibilitate cu API-ul său în stil printf, dar vine cu un mic compromis în performanță. Chiar și pachetul SugaredLogger mai lent este de 4-10 ori mai rapid decât alte pachete de jurnalizare structurate.

Rulați următoarele pe o linie de comandă pentru a instala pachetul Zap:

merge obţine -u merge.uber.org/zap

Veți avea nevoie de o versiune recentă a Go pentru a instala și utiliza cu succes funcționalitatea pachetului Zap.

logger, err := zap. Producție nouă() // zap logger instanță

dacă greș!= zero {
fmt. Println (err. Eroare())
}

amâna logger. Sincronizare() // șterge tampoanele, dacă există
zahăr := logger. Zahăr() //logger cu zahăr aici

zahăr. Infow("nu s-a preluat adresa URL",
// Context structurat ca perechi cheie-valoare scrise vag.
„url”, url,
"atentat, încercare", 3,
„backoff”, timp. Al doilea,
)

zahăr. Infof(„Nu s-a preluat adresa URL: %s”, URL) // folosind formatatorul de stil printf

The logger variabila este o instanță a zap logger, iar Zahăr metoda este o instanță de înregistrare cu zahăr.

The Infow metoda scrie la ieșire și Infof este versiunea de formatare a Infow metodă.

2. Pachetul Logrus

Logrus este un pachet de jurnalizare structurat pentru aplicațiile Go. Logrus este compatibil cu loggerul de bibliotecă standard, cu funcționalități similare. Dacă aveți experiență în utilizarea Buturuga pachet, veți găsi o suită care funcționează cu Logrus.

Logrus nu acceptă formatarea JSON în mod implicit. Dar puteți utiliza întotdeauna o bibliotecă JSON, cum ar fi cea încorporată json pachet cu Logrus’ SetFormatter metodă.

Logrus acceptă înregistrarea la diferite niveluri și, deși nu este la fel de performant ca majoritatea pachetelor de logare, este bogat în funcții și sigur.

Puteți folosi această comandă pentru a instala Logrus în directorul dvs. de lucru:

merge obțineți github.com/sirupsen/logrus

Iată un exemplu de logare cu pachetul Logrus.

import (
"os"
log „github.com/sirupsen/logrus” // import alias
)

funcprincipal {
Buturuga. SetFormatter(&log. JSONFormatter{}) // setați formatatorul la JSON
Buturuga. SetOutput (os. Stdout) // ieșire la ieșire standard
Buturuga. SetLevel (log. WarnLevel) // setează nivelul de avertizare

Buturuga. WithFields (log. Câmpuri{
„Nume”: „John Doe”,
"Vârstă": 40,
}).Info(„Datele biologice ale lui John”)
}

Acest cod importă biblioteca Logrus și creează un alias pentru ea numit Buturuga. În principal funcția, se numește SetFormatter metodă de a seta un formatator pentru jurnalele. Puteți folosi SetOutput metoda pentru a specifica unde ar trebui să meargă mesajele de jurnal; în acest caz, ieșire standard.

The SetLevel metoda înregistrează avertismente la nivelul specificat sau mai sus.

3. Pachetul ZeroLog

ZeroLog este o bibliotecă inspirată de Zap, rapidă, dedicată JSON pentru înregistrare, concepută pentru performanță. Utilizează un API unic de înlănțuire care îi permite lui Zerolog să scrie JSON și să înregistreze evenimente fără alocări și reflectări.

Zerolog își propune să ofere un API mai ușor de utilizat și o performanță mai ridicată, păstrând în același timp baza de cod și API-ul simplu. Se concentrează pe înregistrarea structurată și puteți utiliza ConsoleWriter metodă de logare destul de pe consola dumneavoastră.

Există o alocare scăzută, jurnalizare nivelată, eșantionare, cârlige, câmpuri contextuale și înregistrare a erorilor cu funcții opționale de urmărire a stivei pe pachetul Zerolog. De asemenea, puteți integra Zerolog cu context și http pachete.

Rulați această comandă în terminalul spațiului de lucru pentru a instala Zerolog pachet.

merge obține -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)

Iată un exemplu simplu de utilizare a pachetului Zerolog pentru o operațiune simplă.

import (
„github.com/rs/zerolog” // Zerolog pentru configurații
„github.com/rs/zerolog/log” // jurnal pentru logare
)

funcprincipal() {
// Timpul UNIX este mai rapid și mai mic decât majoritatea marcajelor de timp
zerolog. TimeFieldFormat = zeroolog. TimeFormatUnix

Buturuga. Print("bună lume")
}

The TimeFieldFormat opțiunea este setată la formatul de oră Unix și Imprimare comanda scrie argumentul text în ieșirea standard.

4. Pachetul Log15

The Log15 pachetul este un set de instrumente simplu cu opinii pentru înregistrarea în jurnal, care poate fi citită de oameni și de mașini, cu cele mai bune practici în Go. Log15 modelează io și http pachete din biblioteca standard Go ca alternativă la cea încorporată Buturuga pachet.

Caracteristicile pachetului Log15 includ:

  • un API simplu, ușor de înțeles
  • jurnalizare structurată cu perechi cheie-valoare
  • loggeri pentru copii cu context privat
  • interfață de gestionare pentru construirea de configurații personalizate de logare printr-un API mic
  • suport terminal colorat
  • suport încorporat pentru înregistrarea în fișiere, fluxuri, jurnalele de sistem și jurnalele de rețea
  • salvarea înregistrărilor la ieșire.

Puteți instala Log15 la pachetele dvs. Go cu această comandă.

merge obțineți github.com/inconshreveable/log15

Este ușor să începeți cu pachetul Log15. Iată un exemplu de instanțiere a unui logger și de conectare la nivelurile de informații și de eroare cu pachetul.

import (
log „github.com/inconshreveable/log15” // import alias ca log
)

funcprincipal() {
serverLog := jurnal. New ("depozitar", "nou repertoriu") // instanțierea loggerului
serverLog. Informații(„verificarea stării de sănătate a stratului de depozitare reușită”) // jurnal de informații
serverLog. Eroare ("verificarea sănătății stratului de depozit eșuat") // jurnal de erori
}

The serverLog variabila este o instanță a loggerului Log15; cel Nou metoda returnează un logger cu argumentele de context pe care le furnizați.

The Info metoda returnează un mesaj informativ și Eroare metoda returnează un mesaj de eroare.

Scrieți jurnalele utile și ușor de înțeles

Înregistrarea poate fi la fel de critică ca orice altă parte a procesului de dezvoltare. Poate părea foarte ușor în etapele inițiale, dar respectarea practicilor esențiale poate complica procesul. Pentru a gestiona fiecare caz marginal și aspect al jurnalizării, ar trebui să utilizați un pachet de înregistrare pentru a ușura lucrurile.

Folosiți nivelurile de înregistrare, structura și contextul pentru a face jurnalele dvs. ușor de înțeles și potrivite pentru scopurile propuse.