Евидентирање је техника чувања записа за будуће сврхе у циклусу развоја софтвера. Евидентирање је критично јер евиденције помажу у отклањању грешака, дијагностици, решавању проблема и надгледању пројекта.

Можете да користите евиденцију на различитим нивоима ваших апликација за грешке, упозорења, отклањање грешака и још много тога.

Пријављивање Го

Стандардна библиотека Го садржи а Пријава пакет богат функционалношћу. Обрађује различите нивое евидентирања и основне методе везане за евидентирање које ће вам требати за вашу апликацију. Међутим Пријава пакет можда није најбољи избор ако је ваша апликација сложена и желите да дате приоритет продуктивности.

Тхе Пријава пакет не пружа функционалност за структуриране евиденције. Структурирани пакети за евидентирање пружају функционалност која поједностављује и побољшава процес евидентирања. Го екосистем је дом многих таквих пакета.

1. Зап од Убера

Зап је брз, структуриран, нивелисан пакет за евидентирање који је направио Уберов тим отвореног кода за писање дневника у Го. Убер је направио Зап пакет да обезбеди ефикасније евидентирање од других пакета у Го екосистему, укључујући

Пријава пакет.

У Зап пакету постоје два различита логера. Тхе Логгер функција обрађује критичне случајеве перформанси. Тхе СугаредЛоггер нуди више флексибилности са својим АПИ-јем у стилу принтф, али долази са малим компромисом у перформансама. Чак и спорији СугаредЛоггер пакет је 4-10 пута бржи од других структурираних пакета за евидентирање.

Покрените следеће на командној линији да бисте инсталирали Зап пакет:

иди добити -у иди.убер.орг/зап

Требаће вам најновија верзија Го да бисте успешно инсталирали и користили функционалност Зап пакета.

логгер, ерр := зап. НевПродуцтион() // зап логгер инстанца

ако ерр != нула {
фмт. Принтлн (ерр. Грешка())
}

одложити дрвосјеча. Синхронизовати() // испира бафере, ако их има
шећер := дрвосјеча. шећер() //зашећерени дрвосјеча овде

шећер. Инфов("неуспешно преузимање УРЛ-а",
// Структурирани контекст као лабаво откуцани парови кључ/вредност.
"урл", урл,
"покушај", 3,
"повлачење", време. друго,
)

шећер. Инфоф("Неуспешно преузимање УРЛ-а: %с", УРЛ) // коришћењем принтф стилског форматера

Тхе дрвосјеча променљива је инстанца зап дрвосјеча, и Шећер метода је зашећерена инстанца логера.

Тхе Инфов метода уписује на излаз, а Инфоф је верзија форматирања Инфов методом.

2. Пакет Логрус

Логрус је структурирани пакет за евидентирање за Го апликације. Логрус је компатибилан са стандардним библиотечким дневником, са сличном функционалношћу. Ако имате искуства са коришћењем Пријава пакет, наћи ћете пакет који ради са Логрусом.

Логрус подразумевано не подржава ЈСОН форматирање. Али увек можете да користите ЈСОН библиотеку као што је уграђена јсон пакет са Логрусовим СетФорматтер методом.

Логрус подржава евидентирање на различитим нивоима и, иако није тако ефикасан као већина пакета за евидентирање, богат је функцијама и сигуран.

Можете користити ову команду да инсталирате Логрус у свој радни директоријум:

иди набавите гитхуб.цом/сирупсен/логрус

Ево примера евидентирања са Логрус пакетом.

увоз (
"ос"
дневник "гитхуб.цом/сирупсен/логрус" // алиас импорт
)

фунцглавни {
Пријава. СетФорматтер(&лог. ЈСОНФорматтер{}) // подесите форматер на ЈСОН
Пријава. СетОутпут (ос. стандардни излаз) // излаз на стандардни излаз
Пријава. СетЛевел (лог. ниво упозорења) // поставља ниво упозорења

Пријава. ВитхФиелдс (лог. Поља{
"Име": "Јохн Дое",
"Старост": 40,
}).Инфо("Јохн'с Био Дата")
}

Овај код увози Логрус библиотеку и креира псеудоним за њу под називом Пријава. У главни функцију, она позива СетФорматтер метод за постављање форматера за дневнике. Можете користити СетОутпут метод за одређивање где поруке дневника треба да иду; у овом случају, стандардни излаз.

Тхе СетЛевел метод бележи упозорења на наведеном нивоу или изнад.

3. ЗероЛог пакет

ЗероЛог је Зап-инспирисана, брза библиотека посвећена ЈСОН-у за евидентирање, дизајнирана за перформансе. Користи јединствени АПИ за уланчавање који омогућава Зерологу да пише ЈСОН и евидентира догађаје без алокација и рефлексија.

Зеролог има за циљ да обезбеди АПИ који је лакши за коришћење и веће перформансе док одржава базу кода и АПИ једноставним. Фокусира се на структурирано евидентирање и можете користити ЦонсолеВритер метод за лепо пријављивање на вашу конзолу.

Постоји ниска алокација, нивелисано евидентирање, узорковање, куке, контекстуална поља и евидентирање грешака са опционим функцијама праћења стека у пакету Зеролог. Такође можете интегрисати Зеролог са контекст и хттп пакети.

Покрените ову команду у терминалу вашег радног простора да бисте инсталирали Зеролог пакет.

иди гет -у [гитхуб.цом/рс/зеролог/лог](хттп://github.com/rs/zerolog/log)

Ево једноставног примера коришћења пакета Зеролог за једноставну операцију.

увоз (
"гитхуб.цом/рс/зеролог" // зеролог за конфигурације
"гитхуб.цом/рс/зеролог/лог" // дневник за логовање
)

фунцглавни() {
// УНИКС Време је брже и мање од већине временских ознака
зеролог. ТимеФиелдФормат = зеролог. ТимеФорматУник

Пријава. Штампај ("здраво свет")
}

Тхе ТимеФиелдФормат опција је постављена на Уник формат времена, а Принт команда записује текстуални аргумент у стандардни излаз.

4. Пакет Лог15

Тхе Лог15 пакет је једноставан сет алата за људско и машински читљиво евидентирање са најбољим праксама у Го. Лог15 моделира ио и хттп пакете из Го стандардне библиотеке као алтернативу уграђеном Пријава пакет.

Карактеристике пакета Лог15 укључују:

  • једноставан, лако разумљив АПИ
  • структурирано евидентирање са паровима кључ/вредност
  • деца логери са приватним контекстом
  • интерфејс руковаоца за конструисање прилагођених конфигурација евидентирања преко малог АПИ-ја
  • подршка за терминале у боји
  • уграђена подршка за евидентирање у датотеке, стримове, системске евиденције и мрежне евиденције
  • баферовање записа за излаз.

Можете инсталирати Лог15 у ваше Го пакете са овом командом.

иди набавите гитхуб.цом/инцонсхревеабле/лог15

Лако је започети са Лог15 пакетом. Ево примера инстанцирања логера и пријављивања информација и нивоа грешака са пакетом.

увоз (
дневник "гитхуб.цом/инцонсхревеабле/лог15" // алиас импорт као лог
)

фунцглавни() {
серверЛог := лог. Ново("складиште", "Нова спремиште") // инстанцирање дневника
серверЛог. Инфо("провера здравља слоја складишта успела") // инфо дневник
серверЛог. Грешка („провера здравља слоја складишта није успела“) // дневник грешака
}

Тхе серверЛог променљива је инстанца дневника Лог15; тхе Нова метода враћа логер са аргументима контекста које наведете.

Тхе Инфо метод враћа инфо поруку, а Грешка метода враћа поруку о грешци.

Пишите корисне и разумљиве дневнике

Евидентирање може бити критично као и било који други део процеса развоја. У почетним фазама може изгледати врло лако, али придржавање основних пракси може закомпликовати процес. Да бисте обрадили сваки ивични случај и аспект евидентирања, требало би да користите пакет за евидентирање да бисте олакшали ствари.

Користите нивое евидентирања, структуру и контекст да би ваши дневники били разумљиви и прилагођени њиховој намени.