A naplózás a szoftverfejlesztési ciklus jövőbeli céljaira szolgáló nyilvántartások megőrzésének technikája. A naplózás kritikus fontosságú, mert a naplók segítenek a hibakeresésben, a diagnosztikában, a hibaelhárításban és a projektfigyelésben.

Az alkalmazások különböző szintjein naplózhat hibákat, figyelmeztetéseket, hibakeresést stb.

Bejelentkezés Go

A Go szabványos könyvtára tartalmaz a log funkciókban gazdag csomag. Különféle naplózási szinteket és alapvető naplózási módszereket kezel, amelyekre az alkalmazáshoz szüksége lesz. Azonban a log csomag nem a legjobb választás, ha az alkalmazás összetett, és a termelékenységet szeretné előnyben részesíteni.

Az log csomag nem biztosít funkcionalitást a strukturált naplókhoz. A strukturált naplózási csomagok olyan funkciókat biztosítanak, amelyek leegyszerűsítik és javítják a naplózási folyamatot. A Go ökoszisztéma sok ilyen csomagnak ad otthont.

1. Zap az Ubertől

Támad egy gyors, strukturált, kiegyenlített naplózási csomag, amelyet az Uber nyílt forráskódú csapata épített naplók írásához a Go-ban. Uber megépítette a Zap csomagot, hogy hatékonyabb naplózást biztosítson, mint a Go ökoszisztéma többi csomagja, beleértve a

log csomag.

A Zap csomagban két különböző naplózó található. Az Logger funkció kezeli a kritikus teljesítmény eseteket. Az SugaredLogger nagyobb rugalmasságot kínál a printf-stílusú API-jával, de kis kompromisszumokkal jár a teljesítményben. Még a lassabb SugaredLogger csomag is 4-10-szer gyorsabb, mint a többi strukturált naplózó csomag.

Futtassa a következőket egy parancssorban a Zap csomag telepítéséhez:

megy kap -u megy.uber.org/zap

A Zap csomag funkcióinak sikeres telepítéséhez és használatához a Go legújabb verziójára lesz szüksége.

logger, err := zap. ÚjProdukció() // zap logger példány

ha hiba! = nulla {
fmt. Println (hiba. Hiba())
}

elhalasztja favágó. Szinkronizál() // kiüríti a puffereket, ha vannak
cukor := favágó. Cukor() //sugared logger itt

cukor. Infow("nem sikerült lekérni az URL-t",
// Strukturált kontextus lazán beírt kulcs-érték párokként.
"url", url,
"kísérlet", 3,
"visszalépés", idő. Második,
)

cukor. Infof("Nem sikerült lekérni az URL-t: %s", URL) // a printf stílusformázó használatával

Az favágó változó a támad logger, és a Cukor metódus egy cukrozott logger példány.

Az Infow metódus a kimenetre ír, és a Infof a formázási változata Infow módszer.

2. A Logrus csomag

Logrus egy strukturált naplózási csomag a Go alkalmazásokhoz. A Logrus kompatibilis a szabványos könyvtárnaplózóval, hasonló funkciókkal. Ha van tapasztalata a log csomagot, talál egy Logrus-szal együttműködő csomagot.

A Logrus alapértelmezés szerint nem támogatja a JSON formázást. De mindig használhat egy JSON-könyvtárat, mint a beépített json csomag Logrusszal SetFormatter módszer.

A Logrus különböző szinteken támogatja a naplózást, és bár nem olyan hatékony, mint a legtöbb naplózási csomag, funkciókban gazdag és biztonságos.

Ezzel a paranccsal telepítheti a Logrus-t a munkakönyvtárába:

megy töltse le a github.com/sirupsen/logrus webhelyet

Íme egy példa a Logrus csomaggal való naplózásra.

import (
"os"
naplózza: "github.com/sirupsen/logrus" // alias import
)

funcfő- {
log. SetFormatter(&log. JSONFormatter{}) // állítsa be a formázót JSON-ra
log. SetOutput (os. Stdout) // kimenet szabványos kimenetre
log. SetLevel (log. WarnLevel) // figyelmeztetési szint beállítása

log. WithFields (log. Mezők{
"Név": "John Doe",
"Kor": 40,
}).Info("János életrajzi adatai")
}

Ez a kód importálja a Logrus könyvtárat, és létrehoz egy álnevet log. Ban,-ben fő- függvényt hívja meg a SetFormatter módszert a naplók formázójának beállítására. Használhatja a SetOutput metódus annak meghatározására, hogy hova kerüljenek a naplóüzenetek; ebben az esetben szabványos kimenet.

Az SetLevel A metódus a megadott vagy magasabb szintű figyelmeztetéseket naplózza.

3. ZeroLog csomag

ZeroLog egy Zap által ihletett, gyors, JSON-dedikált könyvtár a naplózáshoz, teljesítményre tervezve. Egyedi láncolási API-t használ, amely lehetővé teszi a Zerolog számára, hogy JSON-t írjon és naplózza az eseményeket lefoglalások és tükrözések nélkül.

A Zerolog célja, hogy egy könnyebben használható API-t és nagyobb teljesítményt biztosítson, miközben a kódbázis és az API egyszerű marad. A strukturált naplózásra összpontosít, és használhatja a ConsoleWriter módszer a szép bejelentkezéshez a konzolon.

Alacsony kiosztás, szintezett naplózás, mintavételezés, horgok, kontextuális mezők és hibanaplózás található a Zerolog csomag opcionális veremkövetési funkcióival. A Zerolog-ot integrálhatja a kontextus és http csomagokat.

Futtassa ezt a parancsot a munkaterület termináljában a telepítéshez Zerolog csomag.

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

Íme egy egyszerű példa a Zerolog csomag egyszerű műveletekhez való használatára.

import (
"github.com/rs/zerolog" // zerolog a konfigurációkhoz
"github.com/rs/zerolog/log" // naplózás a naplózáshoz
)

funcfő-() {
// A UNIX Time gyorsabb és kisebb, mint a legtöbb időbélyeg
zerolog. TimeFieldFormat = zerolog. TimeFormatUnix

log. Nyomtatás ("hello világ")
}

Az TimeFieldFormat opció Unix időformátumra van állítva, és a Nyomtatás parancs írja a szöveges argumentumot a szabványos kimenetre.

4. A Log15 csomag

Az Napló15 A csomag egy egyszerű, véleményezett eszköztár emberi és gépi naplózáshoz, a Go bevált gyakorlataival. Log15 modellek a io és http csomagok a Go standard könyvtárból a beépített alternatívájaként log csomag.

A Log15 csomag szolgáltatásai a következők:

  • egy egyszerű, könnyen érthető API
  • strukturált naplózás kulcs-érték párokkal
  • gyermeknaplózók privát kontextussal
  • kezelőfelület egyéni naplózási konfigurációk létrehozásához egy apró API-n keresztül
  • színes terminál támogatás
  • beépített támogatás a fájlok, adatfolyamok, rendszernaplók és hálózati naplók naplózásához
  • rekordok pufferelése a kimenethez.

Telepítheti Napló15 a Go csomagokhoz ezzel a paranccsal.

megy töltse le a github.com/inconshreveable/log15 webhelyet

Könnyű elkezdeni a Log15 csomagot. Íme egy példa egy naplózó példányosítására, valamint az információ- és hibaszintek bejelentkezésére a csomaggal.

import (
naplózza: "github.com/inconshreveable/log15" // alias importálás naplóként
)

funcfő-() {
serverLog := napló. New("tárhely", "új adattár") // naplózó példányosítása
szerverLog. Info("tárréteg állapotellenőrzés sikeres") // információs napló
szerverLog. Hiba ("lerakatréteg állapotellenőrzése sikertelen") // hibanapló
}

Az szerverLog változó a Log15 logger egy példánya; az Új metódus egy naplózót ad vissza az Ön által megadott kontextus argumentumokkal.

Az Info metódus információs üzenetet ad vissza, és a Hiba metódus hibaüzenetet ad vissza.

Írjon hasznos és érthető naplókat

A naplózás ugyanolyan kritikus lehet, mint a fejlesztési folyamat bármely más része. A kezdeti szakaszban nagyon egyszerűnek tűnhet, de az alapvető gyakorlatok betartása megnehezítheti a folyamatot. A naplózás minden éles esetének és szempontjának kezeléséhez naplózási csomagot kell használnia, hogy megkönnyítse a dolgokat.

Használja a naplózási szinteket, szerkezetet és kontextust, hogy a naplókat érthetővé és a tervezett célokhoz illeszkedővé tegye.