Logimine on tehnika arendustsükli tulevaste eesmärkide jaoks arvestuste pidamiseks. Logimine on kriitilise tähtsusega, sest logid aitavad silumist, diagnostikat, tõrkeotsingut ja projekti jälgimist.

Saate kasutada logimist oma rakenduste erinevatel tasanditel vigade, hoiatuste, silumise ja muu jaoks.

Sisselogimine Mine

Go standardraamatukogu sisaldab a logi pakett rikkalikult funktsionaalsusega. See haldab erinevaid logitasemeid ja põhilisi logimisega seotud meetodeid, mida oma rakenduse jaoks vajate. Siiski, logi pakett ei pruugi olla parim valik, kui teie rakendus on keeruline ja soovite tootlikkust esikohale seada.

The logi pakett ei paku struktureeritud logide jaoks funktsioone. Struktureeritud logipaketid pakuvad funktsioone, mis lihtsustavad ja parandavad logimisprotsessi. Go ökosüsteem on koduks paljudele sellistele pakettidele.

1. Zap Uberilt

Zap on Uberi avatud lähtekoodiga meeskonna poolt loodud kiire, struktureeritud ja tasandatud logimispakett logide kirjutamiseks Go-s. Uber ehitas Zapi paketi, et pakkuda tõhusamat logimist kui teised Go ökosüsteemi paketid, sealhulgas

instagram viewer
logi pakett.

Zapi paketis on kaks erinevat logijat. The Raiemees funktsioon käsitleb kriitilisi jõudlusjuhtumeid. The SugaredLogger pakub printf-stiilis API-ga rohkem paindlikkust, kuid sellega kaasneb jõudluses väike kompromiss. Isegi aeglasem SugaredLoggeri pakett on 4–10 korda kiirem kui teised struktureeritud logimispaketid.

Zapi paketi installimiseks käivitage käsureal järgmine:

mine saada -u mine.uber.org/zap

Zapi paketi funktsioonide edukaks installimiseks ja kasutamiseks on teil vaja Go uusimat versiooni.

logger, err := zap. UusTootmine() // zap loggeri eksemplar

kui eks!= null {
fmt. Println (err. Viga())
}

edasi lükata metsaraie. Sünkrooni() // loputab puhvreid, kui neid on
suhkur := metsaraie. Suhkur() //suhkrulangetaja siin

suhkur. Infow("URL-i toomine nurjus",
// Struktureeritud kontekst lõdvalt tipitud võtme-väärtuste paaridena.
"url", url,
"katse", 3,
"tagasijätmine", aeg. Teiseks
)

suhkur. Infof("URL-i toomine nurjus: %s", URL) // kasutades printf-stiili vormindajat

The metsaraie muutuja on eksemplar zap metsaraie ja Suhkur meetod on suhkrustatud logija eksemplar.

The Infow meetod kirjutab väljundisse ja Infof on vormingu versioon Infow meetod.

2. Logruse pakett

Logrus on Go rakenduste struktureeritud logipakett. Logrus ühildub sarnase funktsionaalsusega tavalise raamatukogu logijaga. Kui teil on kogemusi selle kasutamisega logi paketi, leiate Logrusega töötava sviidi.

Logrus ei toeta vaikimisi JSON-vormingut. Kuid saate alati kasutada JSON-teeki nagu sisseehitatud json pakett Logrusega SetFormatter meetod.

Logrus toetab logimist erinevatel tasanditel ja kuigi see pole nii tõhus kui enamik logimispakette, on see funktsioonirikas ja turvaline.

Saate kasutada seda käsku Logruse installimiseks oma töökataloogi:

mine hankige github.com/sirupsen/logrus

Siin on näide Logruse paketiga logimisest.

importida (
"os"
logi "github.com/sirupsen/logrus" // alias import
)

funcpeamine {
logi. SetFormatter(&log. JSONFormatter{}) // määrake vormindajaks JSON
logi. SetOutput (os. Stdout) // väljund standardväljundisse
logi. SetLevel (log. WarnLevel) // hoiatuse taseme määramine

logi. Väljadega (log. Väljad{
"Nimi": "John Doe",
"Vanus": 40,
}).Teave("Johni eluloo andmed")
}

See kood impordib Logruse teegi ja loob sellele pseudonüümi nimega logi. Aastal peamine funktsiooni, kutsub see välja SetFormatter meetodit logide vormindaja määramiseks. Võite kasutada SetOutput meetod, mis määrab, kuhu logiteated peaksid minema; antud juhul standardväljund.

The SetLevel meetod logib hoiatused määratud tasemel või kõrgemal.

3. ZeroLog pakett

ZeroLog on Zapist inspireeritud kiire JSON-ile pühendatud teek logimiseks, mis on loodud jõudluse tagamiseks. See kasutab ainulaadset aheldamise API-t, mis võimaldab Zerologil kirjutada JSON-i ja logida sündmusi ilma eraldamiste ja peegeldusteta.

Zerologi eesmärk on pakkuda hõlpsamini kasutatavat API-d ja suuremat jõudlust, hoides koodibaasi ja API lihtsana. See keskendub struktureeritud logimisele ja saate kasutada ConsoleWriter meetod oma konsooli ilusaks sisselogimiseks.

Zerologi paketi valikuliste virnajälgimise funktsioonidega on madal jaotus, tasandatud logimine, proovivõtt, konksud, kontekstuaalsed väljad ja vigade logimine. Samuti saate Zerologi integreerida kontekst ja http paketid.

Käivitage see käsk oma tööruumi terminalis, et installida Zerolog pakett.

mine get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)

Siin on lihtne näide Zerologi paketi kasutamisest lihtsa toimingu jaoks.

importida (
"github.com/rs/zerolog" // zerolog konfiguratsioonide jaoks
"github.com/rs/zerolog/log" // logi logimiseks
)

funcpeamine() {
// UNIX Time on kiirem ja väiksem kui enamik ajatempleid
zerolog. TimeFieldFormat = zerolog. TimeFormatUnix

logi. Prindi ("tere maailm")
}

The TimeFieldFormat suvand on määratud Unixi ajavormingule ja Prindi käsk kirjutab tekstiargumendi standardväljundisse.

4. Log15 pakett

The Logi 15 pakett on lihtne inimeste ja masinloetava logimise tööriistakomplekt koos Go parimate tavadega. Log15 mudelid io ja http paketid Go standardteegist alternatiivina sisseehitatud teegile logi pakett.

Log15 paketi funktsioonid hõlmavad järgmist:

  • lihtne ja arusaadav API
  • struktureeritud logimine võtme-väärtuste paaridega
  • privaatse kontekstiga lapslogijad
  • töötleja liides kohandatud logimise konfiguratsioonide loomiseks väikese API kaudu
  • värviline terminali tugi
  • sisseehitatud tugi failide, voogude, süsteemilogide ja võrgulogide logimiseks
  • kirjete puhverdamine väljundisse.

Saate installida Logi 15 selle käsuga oma Go-pakettidele.

mine hankige github.com/inconshreveable/log15

Log15 paketiga on lihtne alustada. Siin on näide logija käivitamisest ning teabe ja veatasemete logimisest paketiga.

importida (
logi "github.com/inconshreveable/log15" // alias import logina
)

funcpeamine() {
serverLog := logi. New("hoidla", "uus hoidla") // instantieruv logija
serverLog. Teave ("hoidlakihi tervisekontroll õnnestus") // infologi
serverLog. Viga ("hoidlakihi tervisekontroll ebaõnnestus") // vealogi
}

The serverLog muutuja on Log15 logija eksemplar; a Uus meetod tagastab logija koos teie esitatud konteksti argumentidega.

The Info meetod tagastab teabesõnumi ja Viga meetod tagastab veateate.

Kirjutage kasulikke ja arusaadavaid logisid

Logimine võib olla sama kriitiline kui mis tahes muu arendusprotsessi osa. Algstaadiumis võib see tunduda väga lihtne, kuid oluliste tavade järgimine võib protsessi keerulisemaks muuta. Iga logimise äärmusliku juhtumi ja aspekti käsitlemiseks peaksite asjade lihtsamaks muutmiseks kasutama logimispaketti.

Kasutage logitasemeid, struktuuri ja konteksti, et muuta oma logid arusaadavaks ja ettenähtud otstarbeks sobivaks.