public function onBootstrap(EventInterface $event) { /** @var \Zend\Mvc\ApplicationInterface $application */ $application = $event->getApplication(); /** @var \Yassa\Rollbar\Options\ModuleOptions $options */ $options = $application->getServiceManager()->get('Yassa\\Rollbar\\Options\\ModuleOptions'); if ($options->enabled) { /** @var RollbarNotifier $rollbar */ $rollbar = $application->getServiceManager()->get('RollbarNotifier'); if ($options->exceptionhandler) { set_exception_handler(array($rollbar, "report_exception")); $eventManager = $application->getEventManager(); $eventManager->attach('dispatch.error', function ($event) use($rollbar) { $exception = $event->getResult()->exception; if ($exception) { $rollbar->report_exception($exception); } }); } if ($options->errorhandler) { set_error_handler(array($rollbar, "report_php_error")); } if ($options->shutdownfunction) { register_shutdown_function($this->shutdownHandler($rollbar)); } } }
/** * * @param EventInterface $event */ public function log(EventInterface $event) { $exception = $event->getResult()->exception; if (!$exception) { return; } $trace = $exception->getTraceAsString(); $i = 1; do { $messages[] = $i++ . ": " . $exception->getMessage(); } while ($e = $exception->getPrevious()); $log = "Exception:n" . implode("n", $messages); $log .= "nTrace:n" . $trace; $this->logger->err($log); }