basalttrail ⌥

basalttrail

Быстрые структурные логи с уровнями для Go.

Версия 2.8.1 Go 1.22+ Лицензия MIT pkg.go.dev

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, меняются на лету.
  • Сэмплирование. Первые записи всплеска сохраняются, из остальных — только часть.

Документация