diff --git a/lib/base.php b/lib/base.php index 14754a0016..53aa7b09fd 100644 --- a/lib/base.php +++ b/lib/base.php @@ -434,9 +434,8 @@ class OC { } if (!defined('PHPUNIT_RUN') and !(defined('DEBUG') and DEBUG)) { - register_shutdown_function(array('OC_Log', 'onShutdown')); - set_error_handler(array('OC_Log', 'onError')); - set_exception_handler(array('OC_Log', 'onException')); + OC\Log\ErrorHandler::register(); + OC\Log\ErrorHandler::setLogger(OC_Log::$object); } // register the stream wrappers diff --git a/lib/legacy/log.php b/lib/legacy/log.php index 7802ead241..027cb89e97 100644 --- a/lib/legacy/log.php +++ b/lib/legacy/log.php @@ -47,31 +47,4 @@ class OC_Log { call_user_func($func, $message, $context); } } - - //Fatal errors handler - public static function onShutdown() { - $error = error_get_last(); - if($error) { - //ob_end_clean(); - self::write('PHP', $error['message'] . ' at ' . $error['file'] . '#' . $error['line'], self::FATAL); - } else { - return true; - } - } - - // Uncaught exception handler - public static function onException($exception) { - self::write('PHP', - $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(), - self::FATAL); - } - - //Recoverable errors handler - public static function onError($number, $message, $file, $line) { - if (error_reporting() === 0) { - return; - } - self::write('PHP', $message . ' at ' . $file . '#' . $line, self::WARN); - - } } diff --git a/lib/log/errorhandler.php b/lib/log/errorhandler.php new file mode 100644 index 0000000000..69cb960de9 --- /dev/null +++ b/lib/log/errorhandler.php @@ -0,0 +1,54 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Log; + +use OC\Log as LoggerInterface; + +class ErrorHandler { + /** @var LoggerInterface */ + private static $logger; + + public static function register() { + $handler = new ErrorHandler(); + + set_error_handler(array($handler, 'onError')); + register_shutdown_function(array($handler, 'onShutdown')); + set_exception_handler(array($handler, 'onException')); + } + + public static function setLogger(LoggerInterface $logger) { + self::$logger = $logger; + } + + //Fatal errors handler + public static function onShutdown() { + $error = error_get_last(); + if($error && self::$logger) { + //ob_end_clean(); + $msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line']; + self::$logger->critical($msg, array('app' => 'PHP')); + } + } + + // Uncaught exception handler + public static function onException($exception) { + $msg = $exception->getMessage() . ' at ' . $exception->getFile() . '#' . $exception->getLine(); + self::$logger->critical($msg, array('app' => 'PHP')); + } + + //Recoverable errors handler + public static function onError($number, $message, $file, $line) { + if (error_reporting() === 0) { + return; + } + $msg = $message . ' at ' . $file . '#' . $line; + self::$logger->warning($msg, array('app' => 'PHP')); + + } +}