BonBonSlick
@BonBonSlick
Vanilla Full Stack Web Architector

Оптимальный вариант логирования Exception?

1 - Trait
2 - Command https://symfony.com/doc/current/components/messeng...
3 - Event https://symfony.com/doc/current/components/event_d...

Возможно есть какие иные варианты, это эдакий модуль логирования. Поскольку ивенты с Domain Model это ES и там журналирование идет автоматом, в отличии от Exception которые могут вылезти где угодно и когда угодно.

Необходимо логировать ексепшены в разные файлы по приоритету.
Пример:
infoException - ексепшен простой, ну бывает вылетает.
criticalException - критический екепшен, необходимо срочно проверить в чем дело, естественно файлы разные как и доп инфо.
Возможно надо будет делать дополнительные инжекты и выполнять какие то доп действия в зависимости от уровня ексепшена.

К прмиеру в случае критического ексепшена высылать емейл, смс, и т.д., то есть идут уже инжекты сервисов и доп., действия. В отличии от infoException, который просто записан в файл.

Так же, не только логирование ексепшенов, возможно каких то важных для приложения действий не связанных с Domain Model. Остальное, как по мне уже более ES, Domain Model и там своя у меня реализация с prooph компонентами.

П.С. лично я склоняюь к диспатчу ивента.
  • Вопрос задан
  • 260 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmitriylanets
во первых если вы пишите функционал который будет использовать в другом коде, вы не должны думать за него какое исключение в каком уровне логирования использовать, а именно так и делаете criticalException и infoException , может для него infoException будет как критичный.
я бы начал с уровня сервисов и базовых действий CRUD например OrderNotFound,OrderNotCreate,OrderNotDelete и тд
Ответ написан
akubintsev
@akubintsev
backend разработчик
Есть же замечательный Monolog, который понимает как уровни логгирования, так и каналы, так имеет разные транспортные адаптеры. Недавно как раз рефакторил старый код под логгирование ошибок, исключений и отсылку алертов при отказе внешних сервисов и вполне хватило данного пакета.
Чтобы поймать то или иное исключение достаточно на самом верхнем уровне приложения сделать обёртку try-catch или же сделать разбор через set_exception_handler.
Не нужны вам эти астронавтские загоны.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
17 нояб. 2018, в 00:02
1000 руб./за проект
16 нояб. 2018, в 23:20
3000 руб./за проект
16 нояб. 2018, в 23:01
16000 руб./за проект