Mežizstrāde ir paņēmiens uzskaitei turpmākiem nolūkiem programmatūras izstrādes ciklā. Reģistrēšana ir ļoti svarīga, jo žurnāli palīdz veikt atkļūdošanu, diagnostiku, traucējummeklēšanu un projektu uzraudzību.
Varat izmantot reģistrēšanu dažādos lietojumprogrammu līmeņos kļūdu, brīdinājumu, atkļūdošanas un citu iemeslu dēļ.
Pieteikšanās Go
Go standarta bibliotēka satur a žurnāls ar funkcionalitāti bagāta pakete. Tas apstrādā dažādus reģistrēšanas līmeņus un pamata reģistrēšanas metodes, kas jums būs nepieciešamas jūsu lietojumprogrammai. Tomēr žurnāls pakotne var nebūt labākā izvēle, ja jūsu lietotne ir sarežģīta un vēlaties noteikt produktivitāti par prioritāti.
The žurnāls pakotne nenodrošina strukturētu žurnālu funkcionalitāti. Strukturētas reģistrēšanas pakotnes nodrošina funkcionalitāti, kas vienkāršo un uzlabo reģistrēšanas procesu. Go ekosistēma ir mājvieta daudzām šādām pakotnēm.
1. Zap no Uber
Zap ir ātra, strukturēta, izlīdzināta reģistrēšanas pakotne, ko izveidojusi Uber atvērtā pirmkoda komanda žurnālu rakstīšanai programmā Go. Uber izveidoja Zap pakotni, lai nodrošinātu efektīvāku reģistrēšanu nekā citas pakotnes Go ekosistēmā, tostarp
žurnāls iepakojums.Zap pakotnē ir divi atšķirīgi reģistrētāji. The Mežizstrādnieks funkcija apstrādā kritiskos veiktspējas gadījumus. The SugaredLogger piedāvā lielāku elastību ar savu printf stila API, taču tas ir saistīts ar nelielu veiktspējas kompromisu. Pat lēnākā SugaredLogger pakotne ir 4–10 reizes ātrāka nekā citas strukturētās reģistrēšanas pakotnes.
Lai instalētu Zap pakotni, komandrindā izpildiet tālāk norādītās darbības.
aiziet saņemt -u aiziet.uber.org/zap
Lai veiksmīgi instalētu un izmantotu Zap pakotnes funkcionalitāti, ir nepieciešama jaunāka Go versija.
logger, err := zap. NewProduction() // zap reģistrētāja instance
ja kļūda! = nulle {
fmt. Println (kļūda. Kļūda())
}atlikt mežizstrādātājs. Sinhronizēt() // izskalo buferus, ja tādi ir
cukurs := mežcirtējs. Cukurs () //cukurots cirtējs šeitcukurs. Infow("neizdevās ienest URL",
// Strukturēts konteksts kā brīvi ievadīti atslēgu un vērtību pāri.
"url", url,
"mēģinājums", 3,
"atkāpšanās", laiks. Otrkārt,
)
cukurs. Infof("Neizdevās ienest URL: %s", URL) // izmantojot printf stila formatētāju
The mežizstrādātājs mainīgais ir gadījums zap mežizstrādātājs un Cukurs metode ir cukurots logger gadījums.
The Infow metode raksta uz izvadi, un Infof ir formatēšanas versija Infow metodi.
2. Logrus pakete
Logrus ir strukturēta reģistrēšanas pakotne Go lietotnēm. Logrus ir saderīgs ar standarta bibliotēkas reģistrētāju ar līdzīgu funkcionalitāti. Ja jums ir pieredze, izmantojot žurnāls paketi, jūs atradīsiet komplektu, kas strādā ar Logrus.
Logrus pēc noklusējuma neatbalsta JSON formatējumu. Bet jūs vienmēr varat izmantot JSON bibliotēku, piemēram, iebūvēto json iepakojums ar Logrus SetFormatter metodi.
Logrus atbalsta reģistrēšanu dažādos līmeņos, un, lai gan tā nav tik efektīva kā lielākā daļa reģistrēšanas pakotņu, tā ir bagāta ar funkcijām un ir droša.
Varat izmantot šo komandu, lai instalētu Logrus savā darba direktorijā:
aiziet iegūstiet vietni github.com/sirupsen/logrus
Šeit ir reģistrēšanas piemērs ar Logrus pakotni.
imports (
"os"
žurnāls "github.com/sirupsen/logrus" // aizstājvārda importēšana
)funcgalvenais {
žurnāls. SetFormatter(&log. JSONFormatter{}) // iestatiet formatētāju uz JSON
žurnāls. SetOutput (os. Stdout) // izvade uz standarta izvadi
žurnāls. SetLevel (log. WarnLevel) // iestatīt brīdinājuma līmeni
žurnāls. WithFields (log. Lauki{
"Vārds": "Džons Dū",
"Vecums": 40,
}).Informācija ("Jāņa biodati")
}
Šis kods importē Logrus bibliotēku un izveido tai aizstājvārdu ar nosaukumu žurnāls. Iekš galvenais funkciju, tā izsauc SetFormatter metode, lai iestatītu žurnālu formatētāju. Jūs varat izmantot SetOutput metode, lai norādītu, kur jānonāk žurnāla ziņojumiem; šajā gadījumā standarta izvade.
The SetLevel metode reģistrē brīdinājumus norādītajā vai augstākā līmenī.
3. ZeroLog pakotne
ZeroLog ir Zap iedvesmota, ātra, JSON paredzēta reģistrēšanas bibliotēka, kas paredzēta veiktspējai. Tas izmanto unikālu ķēdes API, kas ļauj Zerolog rakstīt JSON un reģistrēt notikumus bez piešķiršanas un pārdomām.
Zerolog mērķis ir nodrošināt vieglāk lietojamu API un lielāku veiktspēju, vienlaikus saglabājot vienkāršu koda bāzi un API. Tas koncentrējas uz strukturētu reģistrēšanu, un jūs varat izmantot ConsoleWriter metode skaistai pieteikšanās konsolē.
Zerolog pakotnē ir zems sadalījums, izlīdzināta reģistrēšana, paraugu ņemšana, āķi, kontekstuālie lauki un kļūdu reģistrēšana ar papildu steka izsekošanas līdzekļiem. Varat arī integrēt Zerolog ar kontekstā un http iepakojumiem.
Palaidiet šo komandu darbvietas terminālī, lai instalētu Zerolog iepakojums.
aiziet get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)
Šeit ir vienkāršs Zerolog pakotnes izmantošanas piemērs vienkāršai darbībai.
imports (
"github.com/rs/zerolog" // zerolog konfigurācijām
"github.com/rs/zerolog/log" // žurnāls mežizstrādei
)funcgalvenais() {
// UNIX laiks ir ātrāks un mazāks nekā vairums laikspiedolu
zerolog. TimeFieldFormat = zerolog. TimeFormatUnix
žurnāls. Drukāt ("sveika pasaule")
}
The TimeFieldFormat opcija ir iestatīta uz Unix laika formātu, un Drukāt komanda ieraksta teksta argumentu standarta izvadē.
4. Log15 pakotne
The Žurnāls15 pakotne ir vienkārša rīkkopa, kas izstrādāta cilvēkiem un mašīnlasāmai reģistrēšanai, izmantojot Go paraugpraksi. Log15 modeļi io un http pakotnes no Go standarta bibliotēkas kā alternatīvu iebūvētajai žurnāls iepakojums.
Log15 pakotnes funkcijas ietver:
- vienkārša, viegli saprotama API
- strukturēta mežizstrāde ar atslēgu-vērtību pāriem
- bērnu mežizstrādātāji ar privātu kontekstu
- apdarinātāja saskarne pielāgotu reģistrēšanas konfigurāciju izveidei, izmantojot nelielu API
- krāsains termināļa atbalsts
- iebūvēts atbalsts reģistrēšanai failos, straumēs, sistēmas žurnālos un tīkla žurnālos
- ierakstu buferizācija izvadīšanai.
Jūs varat instalēt Žurnāls15 uz savām Go pakotnēm ar šo komandu.
aiziet iegūstiet vietni github.com/inconshreveable/log15
Ir viegli sākt darbu ar Log15 pakotni. Šeit ir piemērs, kā izveidot reģistrētāju un reģistrēt informāciju un kļūdu līmeņus ar pakotni.
imports (
žurnāls "github.com/inconshreveable/log15" // aizstājvārds importēt kā žurnālu
)
funcgalvenais() {
serverLog := žurnāls. New("repozitorijs", "jauns repozitorijs") // instantiating logger
serverLog. Informācija ("repozitorija slāņa stāvokļa pārbaude veiksmīga") // informācijas žurnāls
serverLog. Kļūda ("repozitorija slāņa stāvokļa pārbaude neizdevās") // kļūdu žurnāls
}
The serverLog mainīgais ir Log15 reģistrētāja gadījums; uz Jauns metode atgriež reģistrētāju ar jūsu sniegtajiem konteksta argumentiem.
The Informācija metode atgriež informācijas ziņojumu, un Kļūda metode atgriež kļūdas ziņojumu.
Rakstiet noderīgus un saprotamus žurnālus
Mežizstrāde var būt tikpat svarīga kā jebkura cita izstrādes procesa daļa. Sākotnējās stadijās tas var šķist ļoti vienkārši, taču būtisku prakšu ievērošana var sarežģīt procesu. Lai apstrādātu katru mežizstrādes malas gadījumu un aspektu, jums vajadzētu izmantot reģistrēšanas pakotni, lai atvieglotu darbu.
Izmantojiet reģistrēšanas līmeņus, struktūru un kontekstu, lai padarītu žurnālus saprotamus un piemērotus paredzētajiem mērķiem.