Clean Env - минималистичная библиотека для работы с конфигурацией
https://github.com/ilyakaznacheev/cleanenv
Чаще всего для конфигурации в Go используют spf13/viper, наверняка вы о нём слышали.
Но если вам хочется минималистичности и простоты, Clean Env вам понравится. Тут нет ничего лишнего, а значит легко разобраться, сложно сломать. При этом, всё необходимое тут имеется, в том числе поддержка популярных форматов конфига: yaml, json, toml, env.
Особенно мне понравилась работа с тегами структуры, в которую будет парситься конфиг:
-
-
-
- и др.
У Viper не все из этого есть, а для задания имени параметров нужно использовать неочевидный тег -
————
Кстати, если вам вдруг не понравился ни Viper, ни Clean Env, можете посмотреть в сторону koanf, тоже интересный и популярный вариант.
————
💻 Расскажите в комментариях, какими библиотеками для конфигурации вы пользовались, какие вам больше понравились и почему
#package #configuration
https://github.com/ilyakaznacheev/cleanenv
Чаще всего для конфигурации в Go используют spf13/viper, наверняка вы о нём слышали.
Но если вам хочется минималистичности и простоты, Clean Env вам понравится. Тут нет ничего лишнего, а значит легко разобраться, сложно сломать. При этом, всё необходимое тут имеется, в том числе поддержка популярных форматов конфига: yaml, json, toml, env.
Особенно мне понравилась работа с тегами структуры, в которую будет парситься конфиг:
-
env-default
- дефолтные значения для параметров-
yaml
/ json
/ env
- имена параметров для парсинге из разных источников-
env-required
- отмечает поле как обязательное- и др.
У Viper не все из этого есть, а для задания имени параметров нужно использовать неочевидный тег -
mapstructure
.————
Кстати, если вам вдруг не понравился ни Viper, ни Clean Env, можете посмотреть в сторону koanf, тоже интересный и популярный вариант.
————
#package #configuration
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36🔥5❤3
slog - новый логгер в стандартной библиотеке
В версии Go 1.21 в stdlib будет добавлен пакет для работы с логами - slog. Сейчас его можно попробовать в виде стороннего пакета в golang/x.
Что почитать, чтобы быть в курсе:
- Дискуссия на гитхабе, с которой всё началось
- Анонс дизайн-документа slog
- Proposal: Structured Logging, который стал результатом дискуссии
- Подробнейший разбор slog - очень советую почитать для понимания мотивации и решения
- Ещё одна статья на эту тему
————
Напомню, чего не хватало в стандартном логгере - log:
- Нет уровней логирования, например - Info, Error, Debug и др. Без этого логи сложнее фильтровать, разделять по важности.
- Нет поддержки structured logs - мы можем выводить только plain text, и не можем использовать формат, который легко парсится разными сервисами (kibana, grafana и т.п.), например - JSON
- Нельзя добавить доп. поля для контекста: userID, traceID и т.п.
и др.
#logs #package #news
В версии Go 1.21 в stdlib будет добавлен пакет для работы с логами - slog. Сейчас его можно попробовать в виде стороннего пакета в golang/x.
Что почитать, чтобы быть в курсе:
- Дискуссия на гитхабе, с которой всё началось
- Анонс дизайн-документа slog
- Proposal: Structured Logging, который стал результатом дискуссии
- Подробнейший разбор slog - очень советую почитать для понимания мотивации и решения
- Ещё одна статья на эту тему
————
Напомню, чего не хватало в стандартном логгере - log:
- Нет уровней логирования, например - Info, Error, Debug и др. Без этого логи сложнее фильтровать, разделять по важности.
- Нет поддержки structured logs - мы можем выводить только plain text, и не можем использовать формат, который легко парсится разными сервисами (kibana, grafana и т.п.), например - JSON
- Нельзя добавить доп. поля для контекста: userID, traceID и т.п.
и др.
#logs #package #news
pkg.go.dev
slog package - golang.org/x/exp/slog - Go Packages
Package slog provides structured logging, in which log records include a message, a severity level, and various other attributes expressed as key-value pairs.
🔥42👍17
gonew - генератор каркасов проектов в стандартной библиотеке
https://go.dev/blog/gonew
Новость из официального блога авторов Go, совсем свежая
Авторы языка экспериментируют с новым пакетом - gonew, котрый умеет генерировать проект из указанного шаблона. Шаблоны представляют собой обычные пакеты, которые управляются через go mod, что очень удобно.
Сейчас gonew минималистичен, и авторы активно собирают фидбэк сообщества, чтобы понимать как его развивать дальше.
Как установить:
- hello: консольная утилита
- helloserver: HTTP-сервер
————
Мне очень нравится эта идея, т.к. это ещё один шаг в сторону стандартизации накапливющегося зоопарка, как и в случае slog. Сейчас у каждой компании (а то и у многих отдельных разработчиков) есть свой велосипед для генерации бойлерплэйтов, который далеко не тривиален. И выглядит это немного печально.
⚠️ Ещё раз подчеркиваю - пакет экспериментальный, а значит не спешите тащить его в свои проекты, особенно рабочие. Сейчас с ним можно просто поиграть, разобраться и написать фидбэк автрам, если есть что сказать
Расскажите в комментариях, что думаете об этой штуке?
#package #experimental
https://go.dev/blog/gonew
Новость из официального блога авторов Go, совсем свежая
Авторы языка экспериментируют с новым пакетом - gonew, котрый умеет генерировать проект из указанного шаблона. Шаблоны представляют собой обычные пакеты, которые управляются через go mod, что очень удобно.
Сейчас gonew минималистичен, и авторы активно собирают фидбэк сообщества, чтобы понимать как его развивать дальше.
Как установить:
go install golang.org/x/tools/cmd/gonew@latest
Как пользоваться:gonew golang.org/x/example/helloserver example.com/myserver
Примеры шаблонов от авторов:- hello: консольная утилита
- helloserver: HTTP-сервер
————
Мне очень нравится эта идея, т.к. это ещё один шаг в сторону стандартизации накапливющегося зоопарка, как и в случае slog. Сейчас у каждой компании (а то и у многих отдельных разработчиков) есть свой велосипед для генерации бойлерплэйтов, который далеко не тривиален. И выглядит это немного печально.
Расскажите в комментариях, что думаете об этой штуке?
#package #experimental
Please open Telegram to view this post
VIEW IN TELEGRAM
go.dev
Experimenting with project templates - The Go Programming Language
Announcing golang.org/x/tools/cmd/gonew, an experimental tool for starting new Go projects from predefined templates
🔥35👍10❤4😁1