go-kit/logger
Требования
- поля со значениями, а не строки
- в числе полей есть имя файла и номер строки
- в проде поля пишутся в json
- при отладке в консоли - читаемый вывод
- для тестов вывод пишется в буфер и его можно анализировать
- ?? возможность влючить отладку заданного пакета
Автор приложения, использующего ваш пакет, по разным причинам может выбрать одну из многих систем журналирования.
Я предпочитаю вариант, при котором этот выбор не ограничивается моим пакетом.
Т.е. мои пакеты для журналирования используют внешний интерфейс, а выбор пакета журналирования я оставляю за автором приложения.
Зачем log.V(X).Info?
По сравнению с вариантом log.Debug()
и log.Warn()
. использование переменной позволяет изменять уровень журналирования пакета
при старте программы или в процессе ее работы.
В частности, если число для отладки (1) положить в переменную DL
и для журналирования использовать log.V(DL).Info
,
то при отладке всего приложения можно выключить журналирование неактуального пакета инструкцией вида pkg.DL = 9
.
TODO
примеры (narra? webtail?)