Comments 9
Если сайт напрямую обращается к Sentry - разве нет риска, что кто-нибудь навалит туда мусорных данных, узнав api ключ?
Спасибо за статью!
Подскажите, как обогащаете серверные логи юзер-специфичными данными? Начиная от user-agent и ip.
Хороший вопрос! На сервере обогащаем логи данными в точке входа - для нас это вызов getServerSideProps из page api Next.JS. Данные сохраняем в "контекст" логера (прим. юзер агент, ip, id сессии и тп). Поскольку инстанс единый на сервере, то все последующие вызовы методов логера имеют актуальный контекст в рамках одного запроса при SSR.
Поскольку инстанс единый на сервере, то все последующие вызовы методов логера имеют актуальный контекст в рамках одного запроса при SSR
Но это же гарантированная гонка между разными запросами, или под контекстом имеется ввиду Async Local Storage?
Все верно, под капотом используется ALS. Кстати прямо в документации есть простой пример использования ALS для сохранения контекста логирования в рамках жизненного цикла одного запроса.
А Next.js как-то предоставляет доступ к контексту, который он создаёт на каждый обработчик запроса?
Next.js дает возможность обратиться к контексту запроса внутри getServerSideProps в page api, а в app router доступны только headers и cookies.
Логирование во фронтенд-приложениях. Опыт Звука