«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать ведение журнала MDC в GoLang?

Как реализовать ведение журнала MDC в GoLang?

Опубликовано 23 декабря 2024 г.
Просматривать:717

How can you implement MDC logging in GoLang?

Ведение журнала MDC в GoLang

Ведение журнала MDC в Java основано на локальном хранилище потоков, которое недоступно в GoLang. Однако аналогичной функциональности можно добиться, пропустив контекст через стек.

Java MDC использует локальное хранилище потоков, чего нет в Go. Самый близкий вариант — пропустить контекст через ваш стек, что становится обычной практикой в ​​библиотеках Go.

Один из способов реализовать это — использовать пакет промежуточного программного обеспечения, который добавляет идентификатор запроса в контекст веб-запроса. . Затем этот идентификатор можно получить и использовать в стеке для целей журналирования.

Вот простой пример пакета промежуточного программного обеспечения:

req = req.WithContext(context.WithValue(req.Context(), "requestId", ID))

Затем можно получить идентификатор запроса используя:

ctx.Value("requestId")

Это значение можно использовать в пользовательской функции журнала:

func logStuff(ctx context.Context, msg string) {
    log.Println(ctx.Value("requestId"), msg) // call stdlib logger
}

Этот подход позволяет легко отслеживать одновременные запросы путем добавления уникальных идентификаторов во все журналы сервера. Существуют и другие возможные реализации, но эта обеспечивает простой способ ведения журнала в стиле MDC в GoLang.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3