aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Log.php2
-rw-r--r--lib/private/Log/ExceptionSerializer.php24
2 files changed, 22 insertions, 4 deletions
diff --git a/lib/private/Log.php b/lib/private/Log.php
index 83b92ecd1ab..db86aa8bfe3 100644
--- a/lib/private/Log.php
+++ b/lib/private/Log.php
@@ -314,7 +314,7 @@ class Log implements ILogger, IDataLogger {
$app = $context['app'] ?? 'no app in context';
$level = $context['level'] ?? ILogger::ERROR;
- $serializer = new ExceptionSerializer();
+ $serializer = new ExceptionSerializer($this->config);
$data = $serializer->serializeException($exception);
$data['CustomMessage'] = $context['message'] ?? '--';
diff --git a/lib/private/Log/ExceptionSerializer.php b/lib/private/Log/ExceptionSerializer.php
index 0cb68f08914..ae3e6ba100d 100644
--- a/lib/private/Log/ExceptionSerializer.php
+++ b/lib/private/Log/ExceptionSerializer.php
@@ -33,6 +33,7 @@ use OC\Core\Controller\SetupController;
use OC\HintException;
use OC\Security\IdentityProof\Key;
use OC\Setup;
+use OC\SystemConfig;
class ExceptionSerializer {
public const methodsWithSensitiveParameters = [
@@ -92,6 +93,13 @@ class ExceptionSerializer {
'imagecreatefromstring',
];
+ /** @var SystemConfig */
+ private $systemConfig;
+
+ public function __construct(SystemConfig $systemConfig) {
+ $this->systemConfig = $systemConfig;
+ }
+
public const methodsWithSensitiveParametersByClass = [
SetupController::class => [
'run',
@@ -163,11 +171,21 @@ class ExceptionSerializer {
$data = get_object_vars($arg);
$data['__class__'] = get_class($arg);
return array_map([$this, 'encodeArg'], $data);
- } elseif (is_array($arg)) {
+ }
+
+ if (is_array($arg)) {
+ // Only log the first 5 elements of an array unless we are on debug
+ if ((int)$this->systemConfig->getValue('loglevel', 2) !== 0) {
+ $elemCount = count($arg);
+ if ($elemCount > 5) {
+ $arg = array_slice($arg, 0, 5);
+ $arg[] = 'And ' . ($elemCount - 5) . ' more entries, set log level to debug to see all entries';
+ }
+ }
return array_map([$this, 'encodeArg'], $arg);
- } else {
- return $arg;
}
+
+ return $arg;
}
public function serializeException(\Throwable $exception) {