Skip to content

Instantly share code, notes, and snippets.

@ThaDafinser
Last active August 29, 2015 14:06
Show Gist options
  • Save ThaDafinser/dc75996f674284cf14e0 to your computer and use it in GitHub Desktop.
Save ThaDafinser/dc75996f674284cf14e0 to your computer and use it in GitHub Desktop.
<?php
namespace LispBase\Zend\Log;
use Zend\Log\Logger as ZendLogger;
class Logger extends ZendLogger
{
public static $errorPriorityMap = array(
E_NOTICE => self::NOTICE,
E_USER_NOTICE => self::NOTICE,
E_WARNING => self::WARN,
E_CORE_WARNING => self::WARN,
E_USER_WARNING => self::WARN,
E_ERROR => self::ERR,
E_USER_ERROR => self::ERR,
E_CORE_ERROR => self::ERR,
E_RECOVERABLE_ERROR => self::ERR,
E_PARSE => self::ERR,
E_COMPILE_ERROR => self::ERR,
E_COMPILE_WARNING => self::ERR,
E_STRICT => self::DEBUG,
E_DEPRECATED => self::DEBUG,
E_USER_DEPRECATED => self::DEBUG
);
/**
* Register a shutdown handler to log fatal errors
*
* @link http://www.php.net/manual/function.register-shutdown-function.php
* @param Logger $logger
* @return bool
*/
public static function registerFatalErrorShutdownFunction(ZendLogger $logger)
{
// Only register once per instance
if (static::$registeredFatalErrorShutdownFunction) {
return false;
}
$errorPriorityMap = static::$errorPriorityMap;
register_shutdown_function(function () use ($logger) {
$error = error_get_last();
if (null !== $error && array_key_exists($error['type'], self::$errorPriorityMap) && self::$errorPriorityMap[$error['type']] == self::ERR) {
$logger->log(self::$errorPriorityMap[$error['type']], $error['message'], array(
'file' => $error['file'],
'line' => $error['line']
));
}
});
static::$registeredFatalErrorShutdownFunction = true;
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment