Size: a a a

2020 October 07

AK

Alex Kharlamov in Go-go!
Dmitriy Syrovatskiy
Всем привет!

Задумался над логированием  HTTP сервисов.
Хочется помимо стандартных time, level, msg:
⁃ писать имя сервиса в лог
⁃ писать request_id
Результат в вакууме:
time="2020-10-07T23:35:19+08:00" level=info service=payment request_id=u-u-i-d msg=blabla

Отлично приступаем:
⁃ берем любую либу логирования
⁃ в main создаем глобальный логер
⁃ тут же докидываем префикс с именем сервиса
⁃ создаем requestMiddleware
⁃ в нем на основе глобального логера создаем новый и докидываем в него request_id
⁃ передаем в хендлер через контекст
⁃ юзаем

Вопрос:
Это единственный адекватный способ?
В правильном ли направлении я думаю, те ли это дроиды?
можете посмотреть как сделали это в Echo
источник

AK

Alex Kharlamov in Go-go!
https://echo.labstack.com там как раз как Вы говорите логирует
источник

DS

Dmitriy Syrovatskiy in Go-go!
Alex Kharlamov
https://echo.labstack.com там как раз как Вы говорите логирует
Спасибо, пойду смотреть
источник

ВС

Владимир Столяров... in Go-go!
Dmitriy Syrovatskiy
Всем привет!

Задумался над логированием  HTTP сервисов.
Хочется помимо стандартных time, level, msg:
⁃ писать имя сервиса в лог
⁃ писать request_id
Результат в вакууме:
time="2020-10-07T23:35:19+08:00" level=info service=payment request_id=u-u-i-d msg=blabla

Отлично приступаем:
⁃ берем любую либу логирования
⁃ в main создаем глобальный логер
⁃ тут же докидываем префикс с именем сервиса
⁃ создаем requestMiddleware
⁃ в нем на основе глобального логера создаем новый и докидываем в него request_id
⁃ передаем в хендлер через контекст
⁃ юзаем

Вопрос:
Это единственный адекватный способ?
В правильном ли направлении я думаю, те ли это дроиды?
если сервисы как-то связаны между собой, посмотрите в сторону distributed tracing, ну или хотя бы просто принципов того, как оно устроено
источник

DS

Dmitriy Syrovatskiy in Go-go!
Владимир Столяров
если сервисы как-то связаны между собой, посмотрите в сторону distributed tracing, ну или хотя бы просто принципов того, как оно устроено
связаны, один может дернуть другой, напрямую или косвенно (через очередь или стрим). Спасибо
источник

T

Taras in Go-go!
Dmitriy Syrovatskiy
Всем привет!

Задумался над логированием  HTTP сервисов.
Хочется помимо стандартных time, level, msg:
⁃ писать имя сервиса в лог
⁃ писать request_id
Результат в вакууме:
time="2020-10-07T23:35:19+08:00" level=info service=payment request_id=u-u-i-d msg=blabla

Отлично приступаем:
⁃ берем любую либу логирования
⁃ в main создаем глобальный логер
⁃ тут же докидываем префикс с именем сервиса
⁃ создаем requestMiddleware
⁃ в нем на основе глобального логера создаем новый и докидываем в него request_id
⁃ передаем в хендлер через контекст
⁃ юзаем

Вопрос:
Это единственный адекватный способ?
В правильном ли направлении я думаю, те ли это дроиды?
Есть opentrace api стандарт и его реализации. Например  zipkin или jaeger
источник

T

Taras in Go-go!
источник

DS

Dmitriy Syrovatskiy in Go-go!
Спасибо, интересная статья, наверно на текущий момент оверхед.
источник

DS

Dmitriy Syrovatskiy in Go-go!
По поводу echo там интересно. Есть свой огромный интерфейс Context, он прилетает в кач-ве единственного параметра в handler. В нем же есть и logger, который заполняется в middleware.
источник

NK

Nikita Krasnikov in Go-go!
Dmitriy Syrovatskiy
По поводу echo там интересно. Есть свой огромный интерфейс Context, он прилетает в кач-ве единственного параметра в handler. В нем же есть и logger, который заполняется в middleware.
инстанс логгера в контекст запихивают О_о?
источник

NK

Nikita Krasnikov in Go-go!
Taras
Есть opentrace api стандарт и его реализации. Например  zipkin или jaeger
вот это самый адекватный способ из существующих, судя по моего опыту
источник

ВС

Владимир Столяров... in Go-go!
Nikita Krasnikov
инстанс логгера в контекст запихивают О_о?
Это не гошный стандартный контекст, это отдельный тип от echo
источник

NK

Nikita Krasnikov in Go-go!
Владимир Столяров
Это не гошный стандартный контекст, это отдельный тип от echo
аа это еще в те времена изобрели, когда гошного контекста не существовало?
источник

ВС

Владимир Столяров... in Go-go!
Сходу сложно сказать, но много у каких роутеров так
источник

VP

Vladimir Protasevich in Go-go!
Привет, а не подскажете, если не прошел капчу в Go Get a Job канале, кому писать чтобы разбанили?
источник

DP

Daniel Podolsky in Go-go!
Vladimir Protasevich
Привет, а не подскажете, если не прошел капчу в Go Get a Job канале, кому писать чтобы разбанили?
Пробуйте
источник

VP

Vladimir Protasevich in Go-go!
Daniel Podolsky
Пробуйте
Спасибо, сейчас доберусь до нормального интерета, чтобы на те же грабли не попасть
источник

A

Aragroth in Go-go!
Подскажите, какая ссылка на чатик redis сообщества?
источник

p

pragus in Go-go!
Aragroth
Подскажите, какая ссылка на чатик redis сообщества?
А что там можно обсуждать?
источник

A

Aragroth in Go-go!
pragus
А что там можно обсуждать?
Ну, не знаю. Вот например я сейчас пишу в cli:

ACL LIST

А он мне выдает, что нет такой команды. И я нифига не могу нагуглить ничего.
источник