Библиотека Go (Golang) разработчика
Библиотека Go (Golang) разработчика
1 886 подписчиков · @golang_lib
К каналу →

📝 log/slog: Хватит парсить логи глазами (и тащить Logrus в проект) Два часа ночи.

📝 log/slog: Хватит парсить логи глазами (и тащить Logrus в проект)

Два часа ночи. Прод лежит. Вы сидите в терминале и пытаетесь выцепить причину через grep "error" | grep "user_1234". Знакомая жиза?

Долгие годы стандартный пакет log в Go был... ну, скажем честно, спартанским. Он писал простой текст. А современные системы мониторинга (ELK, Datadog, Grafana Loki) любят структурированные данные (JSON или Key-Value), чтобы по ним можно было строить графики и алерты.

Поэтому каждый Go-разработчик тащил в проект сторонние комбайны: logrus (который официально в режиме maintenance с 2020 года), zerolog или uber-go/zap.

С выходом Go 1.21 праздник наступил и на нашей улице - в стандартную библиотеку завезли log/slog.

Почему slog - это круто?
Он быстрый, расширяемый и, главное, избавляет от сторонних зависимостей.



Как это выглядит:

import "log/slog"

func main() {
// Создаем JSON-хендлер (идеально для прода)
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

// Делаем его логгером по умолчанию для всего приложения
slog.SetDefault(logger)

// Пишем структурированно
slog.Info("user logged in",
slog.Int("user_id", 42),
slog.String("ip", "192.168.1.1"),
)
}
// Вывод:
// {"time":"2023-10-26T15:04:05Z", "level":"INFO", "msg":"user logged in", "user_id":42, "ip":"192.168.1.1"}

🔥 Нюанс для Senior-ов: Интерфейс LogValuer

Самая частая проблема логирования, случайно слить в логи пароль, токен или кредитную карту (PII данные), передав структуру целиком.
В slog есть гениальная вещь - интерфейс LogValuer. Если ваша структура его реализует, логгер вызовет его до сериализации.

type User struct {
ID int
Name string
Password string // СЕКРЕТ!
}

// Учим структуру безопасно логировать саму себя
func (u User) LogValue() slog.Value {
return slog.GroupValue(
slog.Int("id", u.ID),
slog.String("name", u.Name),
slog.String("password", "***REDACTED***"), // Скрыли!
)
}

func main() {
user := User{ID: 1, Name: "Ivan", Password: "super_secret_123"}

// Даже если джун случайно залогирует юзера целиком:
slog.Info("created user", slog.Any("user", user))
// В логах будет: "password": "***REDACTED***". Прод спасен.
}

Конечно, zap всё ещё чуть быстрее на экстремальных нагрузках благодаря жесткой кодогенерации, но для 95% микросервисов slog - это новый абсолютный стандарт.

#golang #logging #slog #bestpractices #observability

👉 @golang_lib
Разбор кода: консольная утилита на Go + PostgreSQL А вот и второй выпуск нашего спецпроекта, в котором опытные ребята из Яндекса разбирают код начинающих разработчиков и показываю…
Читать далее →
152
Go sync.Mutex: Normal and Starvation Mode Go sync.WaitGroup and The Alignment Problem Go sync.Pool and the Mechanics Behind It (We’re here) Go sync.Cond, the Most Overlooked Sync M…
Читать далее →
145
Другие главы канала «Библиотека Go (Golang) разработчика»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 19.06.2026
🔌 Circuit Breaker: Как не добить лежачего (и не умереть самому) Знакомая ситуац…
👁 149 просмотров
Глава от 11.06.2026
📜 Паттерн Saga: Как откатить то, что откатить нельзя Представьте классическую з…
👁 325 просмотров
Глава от 09.06.2026
🔄 Идемпотентность: Как не списать деньги дважды при ретраях Худшее, что может с…
👁 362 просмотров
Глава от 27.05.2026
📦 go mod: Хватит удалять go.sum, когда что-то сломалось Управление зависимостям…
👁 614 просмотров
Глава от 14.05.2026
🗑 Сборщик мусора в Go: Скрытый налог на ваш CPU Если вы спросите джуна, как раб…
👁 612 просмотров
Глава от 08.05.2026
🧬 Generics: Как перестать писать Java на Go Мы ждали их 10 лет. И вот, когда он…
👁 595 просмотров
Глава от 04.05.2026
🧩 Struct Padding: Как вы теряете гигабайты памяти на ровном месте Знаете это чу…
👁 605 просмотров
Глава от 30.04.2026
🚀 PGO: Как получить +10% к скорости, не написав ни строчки кода Все мы любим оп…
👁 641 просмотров
Глава от 26.04.2026
🌪 Fuzzing: Ломаем свой код, пока это не сделали другие Мы привыкли писать Unit-…
👁 694 просмотров

Популярные посты канала «Библиотека Go (Golang) разработчика»

Хватит мучить sync.WaitGroup для HTTP-запросов Каждый джун проходит этот путь: 1. Запускаем 10 горутин через go func(). 2. Добавляем wg.Ad…
👁 778 просмотров
JSON быстрее, чем вы думаете Стандартный encoding/json в Go надежный, но... медленный. Он активно использует рефлексию, что бьет по CPU на …
👁 778 просмотров
"Семафор". Не убей базу данных Запустить 10,000 горутин в Go дешево. А вот открыть 10,000 коннектов к базе или внешнему API - дорого и боль…
👁 720 просмотров
🌪 Fuzzing: Ломаем свой код, пока это не сделали другие Мы привыкли писать Unit-тесты по принципу: "Я ожидаю, что если подать А, выйдет Б". …
👁 694 просмотров
Context Cancellation - это не kill -9 Одна из самых частых иллюзий у разработчиков, приходящих в Go: "Я вызвал cancel(), почему моя горутин…
👁 684 просмотров
Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд Пару недель назад я прочитал о запавшем мне в душу челлендже…
👁 683 просмотров
🧪 Table-Driven Tests: Хватит плодить функции-клоны Проверяю PR джуниора. Файл на 500 строк, из них 450 - это тесты. Смотрю внимательнее, а …
👁 682 просмотров
🚀 PGO: Как получить +10% к скорости, не написав ни строчки кода Все мы любим оптимизировать. Переписываем мапы, пулим объекты в sync.Pool, …
👁 641 просмотров
📦 go mod: Хватит удалять go.sum, когда что-то сломалось Управление зависимостями в Go выглядит элегантно: написал import, сделал go mod tid…
👁 614 просмотров
🗑 Сборщик мусора в Go: Скрытый налог на ваш CPU Если вы спросите джуна, как работает память в Go, он ответит: "Ну, там есть GC, он сам всё …
👁 612 просмотров
🧩 Struct Padding: Как вы теряете гигабайты памяти на ровном месте Знаете это чувство, когда вы долго проектируете структуру, высчитываете т…
👁 605 просмотров
🧬 Generics: Как перестать писать Java на Go Мы ждали их 10 лет. И вот, когда они появились, код-ревью превратились в выставку угловых скобо…
👁 595 просмотров
🔄 Идемпотентность: Как не списать деньги дважды при ретраях Худшее, что может сделать ваш микросервис, это упасть с пятисоткой. Нет, вру. Х…
👁 362 просмотров
📜 Паттерн Saga: Как откатить то, что откатить нельзя Представьте классическую задачу: клиент нажимает кнопку «Купить тур». Вашему бэкенду н…
👁 325 просмотров
Тихая смерть памяти c time.After Внутри select часто используют таймеры для отмены долгих операций. Но есть нюанс, который может положить в…
👁 256 просмотров
🚧 Errors in Go: Хватит сравнивать ошибки через == Знакомая картина? Вы пишете запрос к базе, получаете ошибку, оборачиваете её для логов и …
👁 232 просмотров
⚡Memory Alignment: Когда порядок полей стоит гигабайты Часто при проектировании структур мы группируем поля логически: ID рядом с Name, фла…
👁 225 просмотров
Препроцессоры на Go: нарушение границ или сила -toolexec Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольст…
👁 202 просмотров
🧠 Планировщик Go (GMP): Как 100 000 горутин работают на 4 ядрах Джуны часто думают, что горутины это магия. Написал go func(), и оно как-то…
👁 185 просмотров
Counterfeiter — инструмент для генерации самостоятельных, типобезопасных тестовых заглушек в Go При модульном тестировании часто нужны подд…
👁 184 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
AntiCloudMod — сообщество для тех, кто ценит свободу общения без облачной цензуры. Здесь обсуждают альтернативные мессенджеры, инструменты для приватности и децентрализов…
👥 374 427 · +71 907/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Номер заявления для регистрации в РКН: № 6979154178 Розыгрыши: kichaev@wylsacom.med…
👥 154 615 · +9 691/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
Информация БПЛА Белгород, Белгородский район — специализированный канал в мессенджере Макс, посвященный новостям и информации о беспилотных летательных аппаратах в регион…
👥 139 292 · +8 854/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 83 578 · +19 478/7д
@hitech
Hi-Tech
Оперативные новости, обзоры гаджетов, собственное видео, трансляции мировых анонсов и мероприятий По вопросам сотрудничества и размещения рекламы i.ostapenko@corp.mail.r…
👥 53 184 · -199/7д
@na_kruchok
ГЛЕНТ | МЕМЫ
Глент мемы Это фан-сообщество, созданное преданными поклонниками для поддержки творчества Глента. Данный канал НЕ является официальным и ведется фанатом.
👥 48 675 · +37 656/7д
🏷 Темы и теги
#golang #logging #slog #bestpractices #observability #go разработка #библиотеки go #материалы для go #golang советы #Технологии
📋 О канале Библиотека Go (Golang) разработчика
Канал для Golang-разработчиков, которые хотят расти в профессии. Здесь вы найдете проверенные библиотеки, туториалы, best practices и реальные кейсы из продакшена. Никакой воды — только полезные материалы для Go-разработки: от новичков до сеньоров. Подписывайтесь, чтобы не пропустить свежие инструменты и советы по оптимизации кода.
🔍 Архив всех постов Макс
Поиск по 8,756,475 постам из 201,186 каналов
Попробовать за 1 ₽ →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Библиотека Go (Golang) разработчика» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.