1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-06 21:26:43 +02:00

Merge branch '1.x'

This commit is contained in:
Jordi Boggiano
2016-07-29 05:25:24 +02:00
2 changed files with 14 additions and 3 deletions

View File

@@ -1,3 +1,11 @@
### 1.21.0 (2016-07-29)
* Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues
* Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order
* Added ability to format the main line of text the SlackHandler sends by explictly setting a formatter on the handler
* Added information about SoapFault instances in NormalizerFormatter
* Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level
### 1.20.0 (2016-07-02) ### 1.20.0 (2016-07-02)
* Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy

View File

@@ -32,6 +32,7 @@ class ErrorHandler
private $previousErrorHandler; private $previousErrorHandler;
private $errorLevelMap; private $errorLevelMap;
private $handleOnlyReportedErrors;
private $hasFatalErrorHandler; private $hasFatalErrorHandler;
private $fatalLevel; private $fatalLevel;
@@ -79,13 +80,15 @@ class ErrorHandler
} }
} }
public function registerErrorHandler(array $levelMap = [], $callPrevious = true, $errorTypes = -1) public function registerErrorHandler(array $levelMap = [], $callPrevious = true, $errorTypes = -1, $handleOnlyReportedErrors = true)
{ {
$prev = set_error_handler([$this, 'handleError'], $errorTypes); $prev = set_error_handler([$this, 'handleError'], $errorTypes);
$this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap); $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap);
if ($callPrevious) { if ($callPrevious) {
$this->previousErrorHandler = $prev ?: true; $this->previousErrorHandler = $prev ?: true;
} }
$this->handleOnlyReportedErrors = $handleOnlyReportedErrors;
} }
public function registerFatalHandler($level = null, $reservedMemorySize = 20) public function registerFatalHandler($level = null, $reservedMemorySize = 20)
@@ -157,14 +160,14 @@ class ErrorHandler
*/ */
public function handleError($code, $message, $file = '', $line = 0, $context = []) public function handleError($code, $message, $file = '', $line = 0, $context = [])
{ {
if (!(error_reporting() & $code)) { if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) {
return; return;
} }
// fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) { if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) {
$level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL; $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL;
$this->logger->log($level, self::codeToString($code).': '.$message, ['code' => $code, 'message' => $message, 'file' => $file, 'line' => $line, 'context' => $context]); $this->logger->log($level, self::codeToString($code).': '.$message, ['code' => $code, 'message' => $message, 'file' => $file, 'line' => $line]);
} }
if ($this->previousErrorHandler === true) { if ($this->previousErrorHandler === true) {