Merge pull request #1506 from aztech-dev/logging

Logging
This commit is contained in:
Thibaud Fabre
2015-09-29 15:49:44 +02:00
4 changed files with 26 additions and 8 deletions

View File

@@ -84,6 +84,7 @@ use MediaVorus\Media\MediaInterface;
use MediaVorus\MediaVorus; use MediaVorus\MediaVorus;
use MediaVorus\MediaVorusServiceProvider; use MediaVorus\MediaVorusServiceProvider;
use Monolog\Handler\NullHandler; use Monolog\Handler\NullHandler;
use Monolog\Handler\SyslogHandler;
use Monolog\Logger; use Monolog\Logger;
use Monolog\Processor\IntrospectionProcessor; use Monolog\Processor\IntrospectionProcessor;
use MP4Box\MP4BoxServiceProvider; use MP4Box\MP4BoxServiceProvider;
@@ -266,6 +267,7 @@ class Application extends SilexApplication
$this['phraseanet.exception_handler'] = $this->share(function ($app) { $this['phraseanet.exception_handler'] = $this->share(function ($app) {
$handler = PhraseaExceptionHandler::register($app['debug']); $handler = PhraseaExceptionHandler::register($app['debug']);
$handler->setTranslator($app['translator']); $handler->setTranslator($app['translator']);
$handler->setLogger($app['monolog']);
return $handler; return $handler;
}); });
@@ -1051,13 +1053,8 @@ class Application extends SilexApplication
{ {
$this['monolog.name'] = 'phraseanet'; $this['monolog.name'] = 'phraseanet';
$this['monolog.handler'] = $this->share(function () { $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() private function setupEventDispatcher()

View File

@@ -61,7 +61,7 @@ class ApiOauth2ErrorsSubscriber implements EventSubscriberInterface
$msg = json_encode(['msg' => $msg, 'code' => $code]); $msg = json_encode(['msg' => $msg, 'code' => $code]);
$event->setResponse(new Response($msg, $code, $headers)); $event->setResponse(new Response($msg, $code, $headers));
} else { } else {
$response = $this->handler->createResponseBasedOnRequest($event->getRequest(), $event->getException()); $response = $this->handler->createResponse($event->getException());
$response->headers->set('Content-Type', 'text/html'); $response->headers->set('Content-Type', 'text/html');
$event->setResponse($response); $event->setResponse($response);
} }

View File

@@ -38,7 +38,7 @@ class PhraseaExceptionHandlerSubscriber implements EventSubscriberInterface
return; return;
} }
$event->setResponse($this->handler->createResponseBasedOnRequest($event->getRequest(), $event->getException())); $event->setResponse($this->handler->createResponse($event->getException()));
} }
/** /**

View File

@@ -11,6 +11,8 @@
namespace Alchemy\Phrasea\Core; namespace Alchemy\Phrasea\Core;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler; use Symfony\Component\Debug\ExceptionHandler as SymfonyExceptionHandler;
use Symfony\Component\Debug\Exception\FlattenException; use Symfony\Component\Debug\Exception\FlattenException;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
@@ -21,6 +23,18 @@ class PhraseaExceptionHandler extends SymfonyExceptionHandler
{ {
private $translator; private $translator;
private $logger;
public function __construct()
{
$this->logger = new NullLogger();
}
public function setLogger(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function setTranslator(TranslatorInterface $translator) public function setTranslator(TranslatorInterface $translator)
{ {
$this->translator = $translator; $this->translator = $translator;
@@ -33,6 +47,13 @@ class PhraseaExceptionHandler extends SymfonyExceptionHandler
public function getContent(FlattenException $exception) public function getContent(FlattenException $exception)
{ {
if ($exception->getStatusCode() == '500') {
$this->logger->error($exception->getMessage(), [
'code' => $exception->getCode(),
'trace' => $exception->getTrace()
]);
}
switch (true) { switch (true) {
case 404 === $exception->getStatusCode(): case 404 === $exception->getStatusCode():
if (null !== $this->translator) { if (null !== $this->translator) {