From 4a493c8835b606e9c2b74f275cb8c471adb5fa06 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 5 May 2014 11:31:25 +0200 Subject: [PATCH] Some expected Sabre exceptions are now logged with DEBUG level --- .../connector/sabre/exceptionloggerplugin.php | 17 +++++++++++++++-- lib/public/util.php | 9 +++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/private/connector/sabre/exceptionloggerplugin.php b/lib/private/connector/sabre/exceptionloggerplugin.php index 8e77afaf20..5eaf1e8762 100644 --- a/lib/private/connector/sabre/exceptionloggerplugin.php +++ b/lib/private/connector/sabre/exceptionloggerplugin.php @@ -11,6 +11,17 @@ class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin { + private $nonFatalExceptions = array( + 'Sabre_DAV_Exception_NotAuthenticated' => true, + // the sync client uses this to find out whether files exist, + // so it is not always an error, log it as debug + 'Sabre_DAV_Exception_NotFound' => true, + // this one mostly happens when the same file is uploaded at + // exactly the same time from two clients, only one client + // wins, the second one gets "Precondition failed" + 'Sabre_DAV_Exception_PreconditionFailed' => true, + ); + private $appName; /** @@ -43,8 +54,10 @@ class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin */ public function logException($e) { $exceptionClass = get_class($e); - if ($exceptionClass !== 'Sabre_DAV_Exception_NotAuthenticated') { - \OCP\Util::logException($this->appName, $e); + $level = \OCP\Util::FATAL; + if (isset($this->nonFatalExceptions[$exceptionClass])) { + $level = \OCP\Util::DEBUG; } + \OCP\Util::logException($this->appName, $e, $level); } } diff --git a/lib/public/util.php b/lib/public/util.php index f06ddd6664..3b0fc09f7e 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -86,21 +86,22 @@ class Util { * if DEBUG mode is enabled * @param string $app app name * @param \Exception $ex exception to log + * @param string $level log level, defaults to \OCP\Util::FATAL */ - public static function logException( $app, \Exception $ex ) { + public static function logException( $app, \Exception $ex, $level = \OCP\Util::FATAL ) { $class = get_class($ex); $message = $class . ': ' . $ex->getMessage(); if ($ex->getCode()) { $message .= ' [' . $ex->getCode() . ']'; } - \OCP\Util::writeLog($app, $message, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, $message, $level); if (defined('DEBUG') and DEBUG) { // also log stack trace $stack = explode("\n", $ex->getTraceAsString()); // first element is empty array_shift($stack); foreach ($stack as $s) { - \OCP\Util::writeLog($app, 'Exception: ' . $s, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, 'Exception: ' . $s, $level); } // include cause @@ -110,7 +111,7 @@ class Util { if ($ex->getCode()) { $message .= '[' . $ex->getCode() . '] '; } - \OCP\Util::writeLog($app, 'Exception: ' . $message, \OCP\Util::FATAL); + \OCP\Util::writeLog($app, 'Exception: ' . $message, $level); } } }