diff --git a/lib/Alchemy/Phrasea/Application.php b/lib/Alchemy/Phrasea/Application.php index af975aea85..03feb40a29 100644 --- a/lib/Alchemy/Phrasea/Application.php +++ b/lib/Alchemy/Phrasea/Application.php @@ -84,6 +84,7 @@ use MediaVorus\Media\MediaInterface; use MediaVorus\MediaVorus; use MediaVorus\MediaVorusServiceProvider; use Monolog\Handler\NullHandler; +use Monolog\Handler\SyslogHandler; use Monolog\Logger; use Monolog\Processor\IntrospectionProcessor; use MP4Box\MP4BoxServiceProvider; @@ -266,6 +267,7 @@ class Application extends SilexApplication $this['phraseanet.exception_handler'] = $this->share(function ($app) { $handler = PhraseaExceptionHandler::register($app['debug']); $handler->setTranslator($app['translator']); + $handler->setLogger($app['monolog']); return $handler; }); @@ -1051,13 +1053,8 @@ class Application extends SilexApplication { $this['monolog.name'] = 'phraseanet'; $this['monolog.handler'] = $this->share(function () { - return new NullHandler(); + return new SyslogHandler('phraseanet', LOG_SYSLOG, Logger::ERROR); }); - $this['monolog'] = $this->share($this->extend('monolog', function (Logger $logger) { - $logger->pushProcessor(new IntrospectionProcessor()); - - return $logger; - })); } private function setupEventDispatcher() diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiOauth2ErrorsSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiOauth2ErrorsSubscriber.php index bff0cad60f..ff6b28523c 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiOauth2ErrorsSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiOauth2ErrorsSubscriber.php @@ -61,7 +61,7 @@ class ApiOauth2ErrorsSubscriber implements EventSubscriberInterface $msg = json_encode(['msg' => $msg, 'code' => $code]); $event->setResponse(new Response($msg, $code, $headers)); } else { - $response = $this->handler->createResponseBasedOnRequest($event->getRequest(), $event->getException()); + $response = $this->handler->createResponse($event->getException()); $response->headers->set('Content-Type', 'text/html'); $event->setResponse($response); } diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaExceptionHandlerSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaExceptionHandlerSubscriber.php index dbf2fe2782..bcf78023de 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaExceptionHandlerSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/PhraseaExceptionHandlerSubscriber.php @@ -38,7 +38,7 @@ class PhraseaExceptionHandlerSubscriber implements EventSubscriberInterface return; } - $event->setResponse($this->handler->createResponseBasedOnRequest($event->getRequest(), $event->getException())); + $event->setResponse($this->handler->createResponse($event->getException())); } /** diff --git a/lib/Alchemy/Phrasea/Core/PhraseaExceptionHandler.php b/lib/Alchemy/Phrasea/Core/PhraseaExceptionHandler.php index ce7d392c90..d81cc3989a 100644 --- a/lib/Alchemy/Phrasea/Core/PhraseaExceptionHandler.php +++ b/lib/Alchemy/Phrasea/Core/PhraseaExceptionHandler.php @@ -11,6 +11,8 @@ namespace Alchemy\Phrasea\Core; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler; use Symfony\Component\Debug\Exception\FlattenException; use Symfony\Component\HttpFoundation\Request; @@ -21,6 +23,18 @@ class PhraseaExceptionHandler extends SymfonyExceptionHandler { private $translator; + private $logger; + + public function __construct() + { + $this->logger = new NullLogger(); + } + + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + public function setTranslator(TranslatorInterface $translator) { $this->translator = $translator; @@ -33,6 +47,13 @@ class PhraseaExceptionHandler extends SymfonyExceptionHandler public function getContent(FlattenException $exception) { + if ($exception->getStatusCode() == '500') { + $this->logger->error($exception->getMessage(), [ + 'code' => $exception->getCode(), + 'trace' => $exception->getTrace() + ]); + } + switch (true) { case 404 === $exception->getStatusCode(): if (null !== $this->translator) {