Skip to content
Snippets Groups Projects
Commit 4a493c88 authored by Vincent Petry's avatar Vincent Petry
Browse files

Some expected Sabre exceptions are now logged with DEBUG level

parent 341fcdc3
Branches
No related tags found
No related merge requests found
......@@ -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);
}
}
......@@ -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);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment