Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e9b545e

Browse files
committed
Allow the log level to be overriden based on the http status code
1 parent 0032368 commit e9b545e

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\HttpKernel\EventListener;
1313

1414
use Psr\Log\LoggerInterface;
15+
use Psr\Log\LogLevel;
1516
use Symfony\Component\Debug\Exception\FlattenException;
1617
use Symfony\Component\HttpFoundation\Request;
1718
use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
@@ -30,6 +31,7 @@ class ExceptionListener implements EventSubscriberInterface
3031
{
3132
protected $controller;
3233
protected $logger;
34+
public static $httpStatusCodeLogLevel = [];
3335

3436
public function __construct($controller, LoggerInterface $logger = null)
3537
{
@@ -91,11 +93,19 @@ public static function getSubscribedEvents()
9193
protected function logException(\Exception $exception, $message)
9294
{
9395
if (null !== $this->logger) {
94-
if (!$exception instanceof HttpExceptionInterface || $exception->getStatusCode() >= 500) {
95-
$this->logger->critical($message, array('exception' => $exception));
96-
} else {
97-
$this->logger->error($message, array('exception' => $exception));
96+
$logLevel = LogLevel::ERROR;
97+
if ($exception instanceof HttpExceptionInterface) {
98+
$statusCode = $exception->getStatusCode();
99+
if (isset(static::httpStatusCodeLogLevel[$statusCode])) {
100+
$logLevel = static::httpStatusCodeLogLevel[$statusCode];
101+
} else if ($statusCode >= 500) {
102+
$logLevel = LogLevel::CRITICAL;
103+
} else if ($statusCode >= 400) {
104+
$logLevel = LogLevel::WARNING;
105+
}
98106
}
107+
108+
$this->logger->log($logLevel, $message, array('exception' => $exception));
99109
}
100110
}
101111

0 commit comments

Comments
 (0)