Заглушить логи
С появлением пакета log/slog в Go 1.21 наконец-то стало возможно нормально вести журналы без использования внешних библиотек.
Если еще не пробовали, то рекомендую простенький туториал и доку, она понятная и с примерами.
log := slog.New(slog.NewTextHandler(os.Stdout, nil))
log.Info("operation", "count", 3, "took", 50*time.Millisecond)
time=2024-12-09T10:20:47.660+00:00 level=INFO msg=operation count=3 took=50ms
Но вообще сказать я хотел не о самом slog
, а о том, как в нем заглушить логи (например, для тестов или бенчмарков).
Сделать это несложно — просто используйте io.Discard
в качестве приемника для slog.TextHandler
:
log := slog.New(slog.NewTextHandler(io.Discard, nil))
log.Info("Prints nothing")
А в Go 1.24 появился еще более простой способ — через slog.DiscardHandler
:
log := slog.New(slog.DiscardHandler)
log.Info("Prints nothing")
Вроде и так не особо сложно было, ну да ладно :)
★ Подписывайтесь на новые заметки.