2014-09-18 2 views
3

У меня довольно распространенная проблема, я думаю, но я не могу найти ответ «лучшей практики».Laravel Database Log - лучшая практика

Я разработал множество небольших веб-приложений, основанных на исходной структуре для моих клиентов. Эти приложения используются только в очень специфическом контексте, связанном с бизнесом, они используются для чего-то вроде месяца в год в среднем из десяти пользователей.

Каждое приложение имеет очень разную цель и «технологию» за ним (иногда это модули Zend, TCPDF и т. Д.). Конечно, время от времени пользователи находят некоторые незначительные ошибки (не обрабатываются исключения, а не заданы массивы ...).

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

Для моей домашней структуры (очень похожей на Laravel) я сделал некоторые функции, которые обрабатывают эти ошибки (используя set_error_handler, register_shutdown_function, ...). В основном эти функции создадут некоторую запись в базе данных MySQL клиента.

Я использую эти функции для двух целей:

  1. действий входа пользователя и сообщений об ошибках PHP + контекстных (маршрутов, контроллеров некоторого потока данных, PHP предопределенных переменных, ...)
  2. Предупреждать меня, когда что-то идет не так (по почте, SMS, и т.д. ...)

Единственным способом, которым я могу анализировать все эти журналы эффективно, когда они находятся в базе данных (я имею таблицу JQuery rendring их оптимизирован для более быстрого чтения и отслеживание) , В противном случае я бы просто использовал текстовые файлы, но я не могу анализировать их так быстро (слишком много информации).

Вопрос

Я только начал проект с Laravel (который я буду использовать для всех моих проектов сейчас), после некоторого чтения документации я обнаружил, что Laravel использует Монолог для журналов. НО, у Монолога нет обработчика PDO, некоторые люди могут сказать, что использование MySQL для журналов - очень плохая идея (Can Laravel 4 log to a MySQL database?), и я полностью согласен с ними. Но это единственный способ, которым я нашел эффективную коррекцию ошибок при работе с большим количеством небольших проектов с ограниченным временем, чтобы посвятить его.

Примечание: у моих клиентов только MySQL, у меня нет времени использовать модульное тестирование (небольшая компания, для этого нет денег).

Есть ли лучшее решение для моей проблемы (регистрировать действия пользователей и ошибки PHP в структурированном виде, уведомление по почте/SMS при попадании ошибок) с использованием некоторой магии Laravel, о которой я еще не знаю?

+0

Просматривая [Монолог обработчиков] (HTTPS : //github.com/Seldaek/monolog/tree/master/src/Monolog/Handler), они кажутся довольно простыми. Вам просто нужно расширить абстрактный класс AbstractProcessingHandler и реализовать метод write(). Посмотрите на других обработчиков, чтобы посмотреть, как они это делают, а затем реализовать версию PDO самостоятельно (похоже, она должна быть достаточно простой). –

+0

Несомненно, это не проблема, но я ищу лучшее решение (возможно, используя * .ini файлы вместо MySQL или двоичные файлы). Поскольку MySQL получает 10000 вставок в день только для журналов (с 10 пользователями). Это небольшое приложение, хорошо, но это тяжелая регистрация ... – Hrusdik

+1

У меня была такая же проблема, поэтому я разработал Laravel Stats Tracker: https://github.com/antonioribeiro/tracker –

ответ

2

Конечно, существует множество инструментов, которые могут отслеживать ваши файлы журналов для вас, а затем собирать их в содержательную информацию. Они могут группировать подобные ошибки и предоставлять подробные данные о типах запросов, которые вызывают их. Еще лучше, вы можете выбрать передачу данных пользователя вместе с ошибками, чтобы вы могли точно видеть, что вызывает проблемы.

Вот некоторые, что я столкнулся в свое время

Смежные вопросы