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 ittcukor. 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.