|
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 22
|
|
Уровни исключений и логирование27.04.2019, 20:33. Показов 4619. Ответов 5
Мне нужно разработать систему интеграции с различными информационными системами.
В процессе разработки будут случаи, когда в непредвиденных ситуациях требуется отправлять уведомления по почте, в других случаях записывать информацию в журнал или отправлять SMS в критических ситуациях. Для логирования и других уведомлений я выбрал Monolog (только знакомлюсь с монологом). Вопрос в том, как мне организовать работу Exception, так, чтобы существовали разные уровни исключений и выполнялись соответствующие действия (запись логов в журнал и т. Д.)? Я искал информацию в разных источниках, нашел несколько статей о работе с исключениями (статья на habr). UnloggedInterface - все необработанные ошибки регистрируются по умолчанию. Этот интерфейс отмечает, Exceptionsчто не нужно регистрироваться вообще. PreloggedInterface - этот интерфейс помечает исключения, которые в любом случае необходимо регистрировать: не имеет значения, обрабатываются они или нет. OutableInterface - этот интерфейс помечает исключения, текст которых может быть передан пользователю. Я не понимаю, какой должна быть иерархия наследования Exception классов? Каким образом нужно связать Monolog (или любую другую систему логирования) с классами исключений ? Может нужно использовать Monolog\ErrorHandler ? (но я не знаю как) .. Подскажите пожалуйста, где я могу посмотреть примеры? Или где почитать об этом подробнее? Я хотел бы понять, как это работает. И посмотрите примеры правильной работы с исключениями и логами. Можно даже примеры на GitHub)) Буду благодарен за любую помощь.
0
|
|
| 27.04.2019, 20:33 | |
|
Ответы с готовыми решениями:
5
Все уровни в PHP Логирование действий юзера
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
||||||||||||||||||
| 27.04.2019, 23:38 | ||||||||||||||||||
|
К примеру, у нас есть код создания товара, который может выбросить ValidationException:
Мне больше нравится, когда критичность ошибки определяется уровнем выше. Если грузчик Вася разбил 10 ящиков водки - его начальник определяет, насколько это плохо и что делать дальше. К слову, у монолога уже есть свои уровни ошибок, можно отталкиваться от них.
Добавлено через 4 минуты
1
|
||||||||||||||||||
|
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 22
|
|||
| 28.04.2019, 00:41 [ТС] | |||
|
Jodah, спасибо большое!
понял, почему не стоит использовать интерфейсы.
Правильно понимаю, что систему оповещений (логирование и т.п) нужно вызывать в момент обработки исключения в блоке catch, а не в момент выбрасыванию исключения - перед throw?
Смотрю документауию Монолога, нашел метод registerExceptionHandler у класса Monolog\ErrorHandler, я так понимаю это аналог set_exception_handler ? Если да, не подскажите как его использовать ? В документации не могу найти примера.. Я с Monolog только начинаю знакомиться, не понимаю в каком месте нужно (возможно есть какие-то событие ?) смотреть, через какой метод пришел лог (т.е. какой у него уровень) и выполнять те, или иные действия?
0
|
|||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
||||||||||||||||||||||||||
| 28.04.2019, 02:10 | ||||||||||||||||||||||||||
Сообщение было отмечено SystemException как решение
Решение
Если не на уровень выше, то, например, так:
При создании обработчика вторым параметром указывается минимальный уровень ошибки, при котором он будет запускаться. Например, если сделать так:
2
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 22
|
|
| 28.04.2019, 10:51 [ТС] | |
|
Jodah, спасибо большое, все подробно разложили по полочкам, все понятно!
Единственное, вы упомянули про IOC-контейнеры, тоже пытался освоить в процессе работы, не получалось.. Но это создам другую тему.
0
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
|
| 28.04.2019, 11:28 | |
|
SystemException, я использую контейнер из Laravel, по нему есть неплохая статья на хабре.
1
|
|
| 28.04.2019, 11:28 | |
|
Помогаю со студенческими работами здесь
6
Обработка исключений. Как организовать общий обработчик исключений? Обработка исключений с пмощью структурированной обработки исключений
Уровни системы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|