summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2015-03-11 12:52:18 +0100
committerLukas Reschke <lukas@owncloud.com>2015-03-11 12:52:18 +0100
commit8154ed4d2c924e134b4d1d6fa8cdd13b311cc75a (patch)
tree616e1b66ae90755ea00cf88dc00333234bc54eeb /lib
parent0d0f9a52d255aaccc553e3dcb3ab363b111c2b32 (diff)
parent0f3e36fdfd1c57f5212c495d59b0e5964df8a4ac (diff)
downloadnextcloud-server-8154ed4d2c924e134b4d1d6fa8cdd13b311cc75a.tar.gz
nextcloud-server-8154ed4d2c924e134b4d1d6fa8cdd13b311cc75a.zip
Merge pull request #14791 from owncloud/fix-14516
Adding a more meaningful message for sabre dav exception
Diffstat (limited to 'lib')
-rw-r--r--lib/private/connector/sabre/exceptionloggerplugin.php36
1 files changed, 31 insertions, 5 deletions
diff --git a/lib/private/connector/sabre/exceptionloggerplugin.php b/lib/private/connector/sabre/exceptionloggerplugin.php
index 2bd43e56f55..a0dc6e7c182 100644
--- a/lib/private/connector/sabre/exceptionloggerplugin.php
+++ b/lib/private/connector/sabre/exceptionloggerplugin.php
@@ -10,6 +10,10 @@
namespace OC\Connector\Sabre;
+use OCP\ILogger;
+use Sabre\DAV\Exception;
+use Sabre\HTTP\Response;
+
class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
private $nonFatalExceptions = array(
'Sabre\DAV\Exception\NotAuthenticated' => true,
@@ -22,13 +26,19 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
'Sabre\DAV\Exception\PreconditionFailed' => true,
);
+ /** @var string */
private $appName;
+ /** @var ILogger */
+ private $logger;
+
/**
* @param string $loggerAppName app name to use when logging
+ * @param ILogger $logger
*/
- public function __construct($loggerAppName = 'webdav') {
+ public function __construct($loggerAppName, $logger) {
$this->appName = $loggerAppName;
+ $this->logger = $logger;
}
/**
@@ -50,14 +60,30 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
/**
* Log exception
*
- * @internal param Exception $e exception
*/
- public function logException($e) {
- $exceptionClass = get_class($e);
+ public function logException(\Exception $ex) {
+ $exceptionClass = get_class($ex);
$level = \OCP\Util::FATAL;
if (isset($this->nonFatalExceptions[$exceptionClass])) {
$level = \OCP\Util::DEBUG;
}
- \OCP\Util::logException($this->appName, $e, $level);
+
+ $message = $ex->getMessage();
+ if ($ex instanceof Exception) {
+ if (empty($message)) {
+ $response = new Response($ex->getHTTPCode());
+ $message = $response->getStatusText();
+ }
+ $message = "HTTP/1.1 {$ex->getHTTPCode()} $message";
+ }
+
+ $exception = [
+ 'Message' => $message,
+ 'Code' => $ex->getCode(),
+ 'Trace' => $ex->getTraceAsString(),
+ 'File' => $ex->getFile(),
+ 'Line' => $ex->getLine(),
+ ];
+ $this->logger->log($level, 'Exception: ' . json_encode($exception), ['app' => $this->appName]);
}
}