ErrorServiceProvider.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Grav\Common\Service;
  3. use Grav\Common\Errors\Errors;
  4. use Pimple\Container;
  5. use Pimple\ServiceProviderInterface;
  6. use Whoops\Handler\JsonResponseHandler;
  7. use Whoops\Handler\PrettyPageHandler;
  8. use Whoops\Handler\PlainTextHandler;
  9. class ErrorServiceProvider implements ServiceProviderInterface
  10. {
  11. public function register(Container $container)
  12. {
  13. // Setup Whoops-based error handler
  14. $errors = new Errors;
  15. $error_page = new PrettyPageHandler;
  16. $error_page->setPageTitle('Crikey! There was an error...');
  17. $error_page->setEditor('sublime');
  18. $error_page->addResourcePath(GRAV_ROOT . '/system/assets');
  19. $error_page->addCustomCss('whoops.css');
  20. $json_page = new JsonResponseHandler;
  21. $json_page->onlyForAjaxRequests(true);
  22. $errors->pushHandler($error_page, 'pretty');
  23. $errors->pushHandler(new PlainTextHandler, 'text');
  24. $errors->pushHandler($json_page, 'json');
  25. $logger = $container['log'];
  26. $errors->pushHandler(function (\Exception $exception, $inspector, $run) use ($logger) {
  27. try {
  28. $logger->addCritical($exception->getMessage() . ' - Trace: ' . $exception->getTraceAsString());
  29. } catch (\Exception $e) {
  30. echo $e;
  31. }
  32. }, 'log');
  33. $errors->register();
  34. $container['errors'] = $errors;
  35. }
  36. }