В этом уроке о пакете Logrus в Golang мы изучим различные примеры того, насколько эффективно ведение журнала может быть выполнено в Go, и посмотрим, насколько важны журналы в языке программирования Go. Мы начнем сейчас.
Начиная с Go
Вот структура каталогов, которую я создал для моей программы Hello World:
Вот созданная нами программа:
основной пакетимпорт "FMT"
func main ()
fmt.Printf ("Привет, мир.\ n ")
Мы можем запустить указанную выше программу с помощью следующей команды:
иди, беги, привет.идтиПосле того, как мы запустим эту команду, вы увидите результат:
Теперь это выглядит хорошо. Перейдем к нашей основной повестке дня.
Пакет Логрус на Голанге
Чтобы начать использовать пакет Логрус в программе Go, необходимо: получать Это. Выполните следующую команду:
иди иди -t github.com / Sirupsen / logrusКогда мы начинаем использовать этот пакет в IntelliJ, мы видим эту ошибку, которую можно исправить одним щелчком мыши:
Как только вы получите пакет, мы сможем его использовать. Начнем с простой программы.
Базовое ведение журнала с Логрусом
Мы начнем с очень простого примера ведения журнала на уровне INFO. Ведение журнала может быть выполнено с помощью сообщений String и метаданных в виде пар ключ-значение, которые выглядят одинаково.
основной пакетИмпортировать (
журнал "github".com / Sirupsen / logrus "
)
func main ()
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
«помощь»: 200,
).Информация ("Golang pro")
Когда мы запускаем эту программу, мы можем увидеть следующий вывод:
Теперь это полезно и красочно!
Различные уровни ведения журнала
Теперь мы попробуем еще один пример, который покажет использование различных уровней ведения журнала, доступных в Логрусе и в целом. Они есть:
- Информация
- Предупреждение
- Фатальный
- Отлаживать
- Паника
Давайте попробуем собрать программу и посмотрим, как эти уровни логов различаются, когда они появляются в нашей программе:
основной пакетИмпортировать (
журнал "github".com / Sirupsen / logrus "
)
func main ()
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
).Информация («Информационное сообщение Golang pro»)
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
).Предупреждение ("ПРЕДУПРЕЖДЕНИЕ Golang pro")
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
).Fatal ("Сообщение Golang pro FATAL")
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
).Паника ("сообщение Golang pro PANIC")
бревно.WithFields (журнал.Fields
"сайт": "linuxhint.com ",
"потрясающе": 100,
).Отладка («сообщение Golang pro DEBUG»)
Когда мы запустим эту программу, мы увидим следующий вывод:
Заметил кое-что? Операторы журнала после оператора Fatal даже не появляются в нашем выводе. Это связано с тем, что при получении фатальной ошибки выполнение программы останавливается в Golang.
Давайте изменим порядок этих операторов и проверим, наблюдаются ли также некоторые изменения в выводе:
На этот раз даже уровень журнала паники отреагировал таким же образом, но результат был совсем другим и подробным.
С помощью уровня журнала паники вы убедитесь, что достаточно информации о хост-машине также напечатано в выводе в консоли, чтобы работа была отлаживаемой.
Более простой способ делать журналы
В приведенных выше вызовах журналы были довольно подробными, а также с метаданными. Есть более простой способ регистрировать ваши сообщения. Давайте попробуем это сейчас:
основной пакетИмпортировать (
журнал "github".com / Sirupsen / logrus "
)
func main ()
бревно.Debug ("Отладочные данные здесь.")
бревно.Информация («Сообщения для общей информации»)
бревно.Warn ("Вы должны взглянуть на это предупреждение!")
бревно.Ошибка ("Что-то не удалось, но программа будет продолжена.")
// Вызов os.Выход (1) после регистрации
бревно.Fatal ("Я ухожу.")
// Вызывает panic () после регистрации
бревно.Паника ("Меня не напечатают :(")
Вот результат работы программы:
Поведение для ведения журнала было таким же, но на этот раз их было легко сделать всего в одной строке.
Заключение
В этом посте мы изучили простые, но полезные примеры того, как мы можем регистрировать важные сообщения с разной степенью серьезности и детальности в наших приложениях, используя пакет Logrus с Golang.