Мне нужно разработать систему интеграции с различными информационными системами.
В процессе разработки будут случаи, когда в непредвиденных ситуациях требуется отправлять уведомления по почте, в других случаях записывать информацию в журнал или отправлять SMS в критических ситуациях.
Для логирования и других уведомлений я выбрал Monolog
(только знакомлюсь с монологом).
Вопрос в том, как мне организовать работу Exception
, так, чтобы существовали разные уровни исключений и выполнялись соответствующие действия (запись логов в журнал и т. Д.)?
Я искал информацию в разных источниках, нашел несколько статей о работе с исключениями (статья на habr).
UnloggedInterface
- все необработанные ошибки регистрируются по умолчанию. Этот интерфейс отмечает, Exceptionsчто не нужно регистрироваться вообще.
PreloggedInterface
- этот интерфейс помечает исключения, которые в любом случае необходимо регистрировать: не имеет значения, обрабатываются они или нет.
OutableInterface
- этот интерфейс помечает исключения, текст которых может быть передан пользователю.
Я не понимаю, какой должна быть иерархия наследования Exception классов?
Каким образом нужно связать Monolog
(или любую другую систему логирования) с классами исключений ?
Может нужно использовать Monolog\ErrorHandler
? (но я не знаю как) ..
Подскажите пожалуйста, где я могу посмотреть примеры? Или где почитать об этом подробнее?
Я хотел бы понять, как это работает. И посмотрите примеры правильной работы с исключениями и логами.
Можно даже примеры на GitHub))
Буду благодарен за любую помощь.
Я логирую исключения с помощью ErrorHandler. Для установки уровня логирования я наследовал \Exception и добавил в него метод, возвращающий LogLevel.
Желательно создать интерфейс, а внутри обработчика ошибок проверять исключение на соответствие интерфейсу. Если подходит, получать уровень с помощью метода, если не подходит - ставить ERROR
class WarningException extends \Exception
{
public function getLogLevel()
{
return LogLevel::ERROR;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
есть блок кода (назовем его $foo->bar() ) который должен выполнится один раз и только один разкак это организовать в многопользовальском сценарии?
Использую ОктябрьСоздана страница заказа, где собирается вся информация
После того, как устанавливаю параметр p: при коннекте к БД, в nginx error логах начинают вылетать ошибкиКак понял, данные ошибки возникают когда...