basalttrail
Быстрые структурные логи с уровнями для Go.
basalttrail — библиотека логирования, которая остаётся быстрой, когда логов много. Поля типизированы, записи ниже уровня отбрасываются до какой-либо работы, а вывод идёт туда, куда вы укажете.
go get github.com/basalttrail/basalttrail@latest
Пример
package main
import (
"context"
"fmt"
"log"
"github.com/basalttrail/basalttrail"
)
func main() {
ctx := context.Background()
l, err := basalttrail.New(basalttrail.Options{
Level: "info",
Format: "json",
})
if err != nil {
log.Fatal(err)
}
defer l.Close()
if err := l.Info(ctx, "сервер запущен"); err != nil {
log.Fatal(err)
}
ok, err := l.SetLevel(ctx, "debug")
if err != nil {
log.Fatal(err)
}
fmt.Println(ok)
}
Возможности
- Логгеры с контекстом. Добавьте id запроса один раз — и он будет в каждой записи.
- Дёшево, когда выключено. Выключенный вызов debug стоит одно сравнение.
- Маскирование. Пометьте поля как секретные — при выводе они будут скрыты.
- Уровни. Debug, info, warn и error, меняются на лету.
- Сэмплирование. Первые записи всплеска сохраняются, из остальных — только часть.
Документация
УстановкаТребования, установка и сборка из исходников.
Начало работыПервая программа и основные понятия.
ПримерыЗаконченные программы для типичных задач.
ПараметрыВсе параметры, их типы и значения по умолчанию.
СправочникСигнатуры и поведение публичного API.
ПроизводительностьБенчмарки и советы по скорости.
ТестированиеКак тестировать код, использующий библиотеку.
Решение проблемЧастые проблемы и их решения.
Частые вопросыКороткие ответы на частые вопросы.
Обновление версийКак переходить между мажорными версиями.
История версийИстория релизов.
Политика безопасностиПоддерживаемые версии и сообщения об уязвимостях.
Участие в разработкеКак собрать проект и отправить изменения.
ПоддержкаГде задать вопрос и как связаться с авторами.