From 2db839c4d36a9c6157e2da6606f6fff1bea2eab0 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 5 Jul 2013 19:28:10 +0200 Subject: [PATCH] Move error handlers from OC_Log to OC\Log\ErrorHandler --- lib/base.php | 5 ++-- lib/legacy/log.php | 27 ------------------- lib/log/errorhandler.php | 56 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 30 deletions(-) create mode 100644 lib/log/errorhandler.php diff --git a/lib/base.php b/lib/base.php index af54f43915..033af32f1a 100644 --- a/lib/base.php +++ b/lib/base.php @@ -433,9 +433,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..2a57cbc594 --- /dev/null +++ b/lib/log/errorhandler.php @@ -0,0 +1,56 @@ + + * 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) { + //ob_end_clean(); + $msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line']; + self::$logger->critical($msg, array('app' => 'PHP')); + } else { + return true; + } + } + + // 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')); + + } +}