Merge pull request #8488 from owncloud/sabre-notfoundloglevel

Some expected Sabre exceptions are now logged with DEBUG level
remotes/origin/ldap_group_count
Lukas Reschke 12 years ago
commit 254fa5eb22
  1. 17
      lib/private/connector/sabre/exceptionloggerplugin.php
  2. 9
      lib/public/util.php

@ -11,6 +11,17 @@
class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin 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; private $appName;
/** /**
@ -43,8 +54,10 @@ class OC_Connector_Sabre_ExceptionLoggerPlugin extends Sabre_DAV_ServerPlugin
*/ */
public function logException($e) { public function logException($e) {
$exceptionClass = get_class($e); $exceptionClass = get_class($e);
if ($exceptionClass !== 'Sabre_DAV_Exception_NotAuthenticated') { $level = \OCP\Util::FATAL;
\OCP\Util::logException($this->appName, $e); if (isset($this->nonFatalExceptions[$exceptionClass])) {
$level = \OCP\Util::DEBUG;
} }
\OCP\Util::logException($this->appName, $e, $level);
} }
} }

@ -86,21 +86,22 @@ class Util {
* if DEBUG mode is enabled * if DEBUG mode is enabled
* @param string $app app name * @param string $app app name
* @param \Exception $ex exception to log * @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); $class = get_class($ex);
$message = $class . ': ' . $ex->getMessage(); $message = $class . ': ' . $ex->getMessage();
if ($ex->getCode()) { if ($ex->getCode()) {
$message .= ' [' . $ex->getCode() . ']'; $message .= ' [' . $ex->getCode() . ']';
} }
\OCP\Util::writeLog($app, $message, \OCP\Util::FATAL); \OCP\Util::writeLog($app, $message, $level);
if (defined('DEBUG') and DEBUG) { if (defined('DEBUG') and DEBUG) {
// also log stack trace // also log stack trace
$stack = explode("\n", $ex->getTraceAsString()); $stack = explode("\n", $ex->getTraceAsString());
// first element is empty // first element is empty
array_shift($stack); array_shift($stack);
foreach ($stack as $s) { foreach ($stack as $s) {
\OCP\Util::writeLog($app, 'Exception: ' . $s, \OCP\Util::FATAL); \OCP\Util::writeLog($app, 'Exception: ' . $s, $level);
} }
// include cause // include cause
@ -110,7 +111,7 @@ class Util {
if ($ex->getCode()) { if ($ex->getCode()) {
$message .= '[' . $ex->getCode() . '] '; $message .= '[' . $ex->getCode() . '] ';
} }
\OCP\Util::writeLog($app, 'Exception: ' . $message, \OCP\Util::FATAL); \OCP\Util::writeLog($app, 'Exception: ' . $message, $level);
} }
} }
} }

Loading…
Cancel
Save