summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php25
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php6
-rw-r--r--lib/private/Log.php15
3 files changed, 17 insertions, 29 deletions
diff --git a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
index 4f7c2286827..dce2f9c45e4 100644
--- a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
@@ -94,26 +94,9 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
$level = \OCP\Util::DEBUG;
}
- $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";
- }
-
- $user = \OC_User::getUser();
-
- $exception = [
- 'Message' => $message,
- 'Exception' => $exceptionClass,
- 'Code' => $ex->getCode(),
- 'Trace' => $ex->getTraceAsString(),
- 'File' => $ex->getFile(),
- 'Line' => $ex->getLine(),
- 'User' => $user,
- ];
- $this->logger->log($level, 'Exception: ' . json_encode($exception), ['app' => $this->appName]);
+ $this->logger->logException($ex, [
+ 'app' => $this->appName,
+ 'level' => $level,
+ ]);
}
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
index 8088ee6dc4d..85ede2ad681 100644
--- a/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/ExceptionLoggerPluginTest.php
@@ -71,13 +71,13 @@ class ExceptionLoggerPluginTest extends TestCase {
$this->plugin->logException($exception);
$this->assertEquals($expectedLogLevel, $this->logger->level);
- $this->assertStringStartsWith('Exception: {"Message":"' . $expectedMessage, $this->logger->message);
+ $this->assertStringStartsWith('Exception: {"Exception":' . json_encode(get_class($exception)) . ',"Message":"' . $expectedMessage . '",', $this->logger->message);
}
public function providesExceptions() {
return [
- [0, 'HTTP\/1.1 404 Not Found', new NotFound()],
- [4, 'HTTP\/1.1 400 This path leads to nowhere', new InvalidPath('This path leads to nowhere')]
+ [0, '', new NotFound()],
+ [4, 'This path leads to nowhere', new InvalidPath('This path leads to nowhere')]
];
}
diff --git a/lib/private/Log.php b/lib/private/Log.php
index ea20353a0a0..0d291218096 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -305,13 +305,18 @@ class Log implements ILogger {
/**
* Logs an exception very detailed
*
- * @param \Exception | \Throwable $exception
+ * @param \Exception|\Throwable $exception
* @param array $context
* @return void
* @since 8.2.0
*/
public function logException($exception, array $context = array()) {
- $exception = array(
+ $level = Util::ERROR;
+ if (isset($context['level'])) {
+ $level = $context['level'];
+ unset($context['level']);
+ }
+ $data = array(
'Exception' => get_class($exception),
'Message' => $exception->getMessage(),
'Code' => $exception->getCode(),
@@ -319,10 +324,10 @@ class Log implements ILogger {
'File' => $exception->getFile(),
'Line' => $exception->getLine(),
);
- $exception['Trace'] = preg_replace('!(' . implode('|', $this->methodsWithSensitiveParameters) . ')\(.*\)!', '$1(*** sensitive parameters replaced ***)', $exception['Trace']);
+ $data['Trace'] = preg_replace('!(' . implode('|', $this->methodsWithSensitiveParameters) . ')\(.*\)!', '$1(*** sensitive parameters replaced ***)', $data['Trace']);
$msg = isset($context['message']) ? $context['message'] : 'Exception';
- $msg .= ': ' . json_encode($exception);
- $this->error($msg, $context);
+ $msg .= ': ' . json_encode($data);
+ $this->log($level, $msg, $context);
}
/**