summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/base.php5
-rw-r--r--lib/legacy/log.php27
-rw-r--r--lib/log/errorhandler.php54
3 files changed, 56 insertions, 30 deletions
diff --git a/lib/base.php b/lib/base.php
index 14754a00161..53aa7b09fd5 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 7802ead2412..027cb89e97c 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 00000000000..69cb960de91
--- /dev/null
+++ b/lib/log/errorhandler.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * 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'));
+
+ }
+}