@kirill-93

Как вы разбираете ошибки и логируете ли действия пользователей?

У меня сайт на Laravel со стандартным логированием ошибок. Но информации из этих ошибок часто не хватает для того, чтобы понять в чем причина.
Ситуации обычно 2:
1) Появляется ошибка в логах. Ошибка выглядит так: Invalid argument supplied for foreach() in Controller.php:350 и дальше цепочка вывозов методов. Не хватает информации что за пользователь вызывал этот метод и какие данные передал.
2) Менеджер сообщает, что после оплаты сбрасывается статус. Сбрасывается не у всех и неясно как. Я начинаю разбираться, пытаюсь воспроизвести баг, но у меня все в порядке. Тогда остается два варианта: или я при проверке отправляю не те данные, что и пользователь, у которого баг. Или пользователь сам (по невнимательности или намерено) поменял статус, а говорит, что это баг.

В обоих случаях мне, как разработчику, очень помог бы подробный лог с действиями пользователей: кто, когда, какой метод, какие данные передал и тд.

Есть ли такие инструменты? Какими вы пользуетесь? И как вы логируете данные и ищите причины багов?
Спасибо.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 3
@mrxor
Simple is better than complex
sentry для инцидентов, graylog для всех логов.
Для случаев
Или пользователь сам (по невнимательности или намерено) поменял статус, а говорит, что это баг.
Обмазывайте бизнес логику логами и смотрите кто что делал, ток ротацию логов сделать, если ее нет)
Ответ написан
@vabka
Токсичный
Sentry для ошибок
Для метрик grafana/prometheus
Для логов ELK
И ещё свой инструмент для трассировок (мы можете взять jaeger, например)

Смысл в целом такой, что для каждого запроса надо назначать уникальный correlationID (чтобы трассировку можно было нарисовать), а потом по ходу выполнения запроса надо хранить контекст с тем, от какого пользователя пришёл запрос и обогащать им логи. Ну и когда приходит запрос - сразу логгируем метод, путь, correlationID, id пользователя, аргументы, ну и тело, если возможно.

Invalid argument supplied for foreach() in Controller.php:350

А от таких ошибок должны спасать статические анализаторы и аннотации типов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы