Регистрирането е техниката за водене на записи за бъдещи цели в цикъла на разработка на софтуер. Регистрирането е от решаващо значение, тъй като регистрационните файлове помагат при отстраняване на грешки, диагностика, отстраняване на неизправности и мониторинг на проекти.
Можете да използвате регистриране на различни нива на вашите приложения за грешки, предупреждения, отстраняване на грешки и др.
Влизане в Go
Стандартната библиотека Go съдържа a дневник пакет с богата функционалност. Той обработва различни нива на регистриране и основни методи, свързани с регистриране, които ще ви трябват за вашето приложение. както и да е дневник пакетът може да не е най-добрият избор, ако приложението ви е сложно и искате да дадете приоритет на продуктивността.
The дневник пакетът не предоставя функционалност за структурирани журнали. Структурираните пакети за регистриране предоставят функционалност, която опростява и подобрява процеса на регистриране. Екосистемата Go е дом на много такива пакети.
1. Зап от Uber
Зап е бърз, структуриран пакет за регистриране на нива, създаден от екипа с отворен код на Uber за писане на регистрационни файлове в Go. Uber създаде пакета Zap, за да осигури по-ефективно регистриране в сравнение с други пакети в екосистемата Go, включително дневник пакет.
В пакета Zap има два различни регистратора. The Дървосекач функция обработва критични случаи на производителност. The SugaredLogger предлага повече гъвкавост със своя API в стил printf, но идва с малък компромис в производителността. Дори по-бавният пакет SugaredLogger е 4-10 пъти по-бърз от другите структурирани пакети за регистриране.
Изпълнете следното на командния ред, за да инсталирате пакета Zap:
отивам разбирам те отивам.uber.org/zap
Ще ви е необходима скорошна версия на Go, за да инсталирате и използвате успешно функционалността на пакета Zap.
logger, err := зап. NewProduction() // екземпляр на zap logger
ако грешка!= нула {
fmt. Println (грешка. грешка ())
}отлагам дървосекач. Sync() // промива буфери, ако има такива
захар := дървар. захар () //захарен дървар тукзахар. Infow("неуспешно извличане на URL",
// Структуриран контекст като свободно въведени двойки ключ-стойност.
"url", url,
"опит", 3,
"backoff", време. Второ,
)
захар. Infof("Неуспешно извличане на URL: %s", URL) // използвайки инструмента за форматиране на стил printf
The дървосекач променливата е екземпляр на зап дърводобив, и захар методът е захаросан екземпляр на регистратор.
The Infow метод записва в изхода, а инфоф е версията за форматиране на Infow метод.
2. Пакетът Logrus
Логрус е структуриран пакет за регистриране за Go приложения. Logrus е съвместим със стандартния библиотечен регистратор с подобна функционалност. Ако имате опит с използването на дневник пакет, ще намерите пакет, работещ с Logrus.
Logrus не поддържа JSON форматиране по подразбиране. Но винаги можете да използвате JSON библиотека като вградената json пакет с Логрус SetFormatter метод.
Logrus поддържа регистриране на различни нива и въпреки че не е толкова ефективен като повечето пакети за регистриране, той е богат на функции и е безопасен.
Можете да използвате тази команда, за да инсталирате Logrus във вашата работна директория:
отивам вземете github.com/sirupsen/logrus
Ето пример за регистриране с пакета Logrus.
импортиране (
"операционна система"
лог "github.com/sirupsen/logrus" // импортиране на псевдоним
)функосновен {
дневник. SetFormatter(&log. JSONFormatter{}) // задава форматиране на JSON
дневник. SetOutput (ос. стандартен изход) // изход към стандартен изход
дневник. SetLevel (дневник. WarnLevel) // задаване на ниво на предупреждение
дневник. WithFields (дневник. Полета{
"Име": "Джон Доу",
"Възраст": 40,
}).Инфо("Биографически данни на Джон")
}
Този код импортира библиотеката Logrus и създава псевдоним за нея дневник. В основен функция, тя извиква SetFormatter метод за задаване на форматиращ файл за регистрационните файлове. Можете да използвате SetOutput метод за указване къде трябва да отиват съобщенията в журнала; в този случай стандартен изход.
The SetLevel метод регистрира предупреждения на посоченото ниво или по-високо.
3. Пакет ZeroLog
ZeroLog е вдъхновена от Zap, бърза, посветена на JSON библиотека за регистриране, проектирана за производителност. Той използва уникален верижен API, който позволява на Zerolog да пише JSON и да регистрира събития без разпределения и отражения.
Zerolog има за цел да осигури по-лесен за използване API и по-висока производителност, като същевременно запазва кодовата база и API прости. Той се фокусира върху структурирано регистриране и можете да използвате ConsoleWriter метод за красиво влизане във вашата конзола.
Има ниско разпределение, регистриране на нива, вземане на проби, кукички, контекстуални полета и регистриране на грешки с опционални функции за проследяване на стека в пакета Zerolog. Можете също да интегрирате Zerolog с контекст и http пакети.
Изпълнете тази команда в терминала на вашето работно пространство, за да инсталирате Zerolog пакет.
отивам get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)
Ето прост пример за използване на пакета Zerolog за проста операция.
импортиране (
"github.com/rs/zerolog" // нулев журнал за конфигурации
"github.com/rs/zerolog/log" // лог за регистриране
)функосновен() {
// Времето на UNIX е по-бързо и по-малко от повечето времеви отпечатъци
нулев лог. TimeFieldFormat = нулев лог. TimeFormatUnix
дневник. Печат ("здравей свят")
}
The TimeFieldFormat опцията е зададена на формата за време на Unix и Печат команда записва текстовия аргумент в стандартния изход.
4. Пакетът Log15
The Дневник15 пакетът е прост набор от инструменти за човешко и машинно четене с най-добри практики в Go. Log15 моделира io и http пакети от стандартната библиотека Go като алтернатива на вградената дневник пакет.
Характеристиките на пакета Log15 включват:
- прост, лесен за разбиране API
- структурирано регистриране с двойки ключ-стойност
- дъщерни регистратори с частен контекст
- интерфейс на манипулатора за конструиране на персонализирани конфигурации за регистриране върху малък API
- поддръжка на цветен терминал
- вградена поддръжка за регистриране на файлове, потоци, системни регистрационни файлове и мрежови регистрационни файлове
- буфериране на записи за изход.
Можете да инсталирате Дневник15 към вашите Go пакети с тази команда.
отивам вземете github.com/inconshreveable/log15
Лесно е да започнете с пакета Log15. Ето пример за инстанциране на регистратор и регистриране на информация и нива на грешки с пакета.
импортиране (
лог "github.com/inconshreveable/log15" // импортиране на псевдоним като дневник
)
функосновен() {
serverLog := регистрационен файл. Ново("хранилище", "нов хранилище") // създаване на регистратор
serverLog. Информация ("успешна проверка на състоянието на слоя хранилище") // информационен дневник
serverLog. Грешка ("неуспешна проверка на състоянието на слоя хранилище") // регистър на грешките
}
The serverLog променливата е екземпляр на регистратора Log15; на Нов метод връща логер с контекстните аргументи, които предоставяте.
The Информация метод връща информационно съобщение и Грешка метод връща съобщение за грешка.
Пишете полезни и разбираеми журнали
Регистрирането може да бъде толкова критично, колкото всяка друга част от процеса на разработка. Може да изглежда много лесно в началните етапи, но придържането към основните практики може да усложни процеса. За да се справите с всеки ръбов случай и аспект на регистриране, трябва да използвате пакет за регистриране, за да улесните нещата.
Използвайте нива на регистриране, структура и контекст, за да направите вашите регистрационни файлове разбираеми и подходящи за предназначението им.