diff --git a/lib/base.php b/lib/base.php
index af78b4e4eb19788afb7e6d11751fe2af82d96dc2..b54b29735517ce972f49af0e410df5f3c9899291 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -504,11 +504,12 @@ class OC {
 
 		if (!defined('PHPUNIT_RUN')) {
 			if (defined('DEBUG') and DEBUG) {
+				OC\Log\ErrorHandler::register(true);
 				set_exception_handler(array('OC_Template', 'printExceptionErrorPage'));
 			} else {
 				OC\Log\ErrorHandler::register();
-				OC\Log\ErrorHandler::setLogger(OC_Log::$object);
 			}
+			OC\Log\ErrorHandler::setLogger(OC_Log::$object);
 		}
 
 		// register the stream wrappers
diff --git a/lib/private/log/errorhandler.php b/lib/private/log/errorhandler.php
index 69cb960de915268fac38ac2cf5c0dacb77e507dc..f6c96ef82188966a220fd1087c93b3525ed2e95f 100644
--- a/lib/private/log/errorhandler.php
+++ b/lib/private/log/errorhandler.php
@@ -14,10 +14,23 @@ class ErrorHandler {
 	/** @var LoggerInterface */
 	private static $logger;
 
-	public static function register() {
+	/**
+	 * @brief remove password in URLs
+	 * @param string $msg
+	 * @return string
+	 */
+	private static function removePassword($msg) {
+		return preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $msg);
+	}
+
+	public static function register($debug=false) {
 		$handler = new ErrorHandler();
 
-		set_error_handler(array($handler, 'onError'));
+		if ($debug) {
+			set_error_handler(array($handler, 'onAll'), E_ALL);
+		} else {
+			set_error_handler(array($handler, 'onError'));
+		}
 		register_shutdown_function(array($handler, 'onShutdown'));
 		set_exception_handler(array($handler, 'onException'));
 	}
@@ -32,14 +45,14 @@ class ErrorHandler {
 		if($error && self::$logger) {
 			//ob_end_clean();
 			$msg = $error['message'] . ' at ' . $error['file'] . '#' . $error['line'];
-			self::$logger->critical($msg, array('app' => 'PHP'));
+			self::$logger->critical(self::removePassword($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'));
+		self::$logger->critical(self::removePassword($msg), array('app' => 'PHP'));
 	}
 
 	//Recoverable errors handler
@@ -48,7 +61,15 @@ class ErrorHandler {
 			return;
 		}
 		$msg = $message . ' at ' . $file . '#' . $line;
-		self::$logger->warning($msg, array('app' => 'PHP'));
+		self::$logger->error(self::removePassword($msg), array('app' => 'PHP'));
+
+	}
+
+	//Recoverable handler which catch all errors, warnings and notices
+	public static function onAll($number, $message, $file, $line) {
+		$msg = $message . ' at ' . $file . '#' . $line;
+		self::$logger->debug(self::removePassword($msg), array('app' => 'PHP'));
 
 	}
+
 }
diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php
index 4c86d0e45e0da61a4fe0480fcefe1db7cd1cb6f8..3590bbd436d5782e1322f8d3a706c870be8d596c 100644
--- a/lib/private/log/owncloud.php
+++ b/lib/private/log/owncloud.php
@@ -69,7 +69,6 @@ class OC_Log_Owncloud {
 			}
 			$time = new DateTime(null, $timezone);
 			// remove username/passswords from URLs before writing the to the log file
-			$message = preg_replace('/\/\/(.*):(.*)@/', '//xxx:xxx@', $message);
 			$entry=array('app'=>$app, 'message'=>$message, 'level'=>$level, 'time'=> $time->format($format));
 			$entry = json_encode($entry);
 			$handle = @fopen(self::$logFile, 'a');