diff options
author | Robin Appelman <robin@icewind.nl> | 2019-09-19 12:20:34 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2019-09-19 13:39:40 +0200 |
commit | 2943c18548e2dbd19b76b26b95d9b4031126c824 (patch) | |
tree | bddff39086fd3eed28641fc456684da60b3ef13b /lib/private/Log.php | |
parent | ce1068394404d2d21fe680da1fcef1963f8da46e (diff) | |
download | nextcloud-server-2943c18548e2dbd19b76b26b95d9b4031126c824.tar.gz nextcloud-server-2943c18548e2dbd19b76b26b95d9b4031126c824.zip |
catch exceptions that occur during logging
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/Log.php')
-rw-r--r-- | lib/private/Log.php | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/lib/private/Log.php b/lib/private/Log.php index 4af833d778f..04148d549d6 100644 --- a/lib/private/Log.php +++ b/lib/private/Log.php @@ -214,24 +214,27 @@ class Log implements ILogger { } $message = strtr($message, $replace); - if ($level >= $minLevel) { - $this->writeLog($app, $message, $level); - - if ($this->crashReporters !== null) { - $messageContext = array_merge( - $context, - [ - 'level' => $level - ] - ); - $this->crashReporters->delegateMessage($message, $messageContext); - } - } else { - if ($this->crashReporters !== null) { - $this->crashReporters->delegateBreadcrumb($message, 'log', $context); + try { + if ($level >= $minLevel) { + $this->writeLog($app, $message, $level); + + if ($this->crashReporters !== null) { + $messageContext = array_merge( + $context, + [ + 'level' => $level + ] + ); + $this->crashReporters->delegateMessage($message, $messageContext); + } + } else { + if ($this->crashReporters !== null) { + $this->crashReporters->delegateBreadcrumb($message, 'log', $context); + } } + } catch (\Throwable $e) { + // make sure we dont hard crash if logging fails } - } private function getLogLevel($context) { @@ -318,16 +321,20 @@ class Log implements ILogger { array_walk($context, [$this->normalizer, 'format']); - if ($level >= $minLevel) { - if (!$this->logger instanceof IFileBased) { - $data = json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR); + try { + if ($level >= $minLevel) { + if (!$this->logger instanceof IFileBased) { + $data = json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR); + } + $this->writeLog($app, $data, $level); } - $this->writeLog($app, $data, $level); - } - $context['level'] = $level; - if (!is_null($this->crashReporters)) { - $this->crashReporters->delegateReport($exception, $context); + $context['level'] = $level; + if (!is_null($this->crashReporters)) { + $this->crashReporters->delegateReport($exception, $context); + } + } catch (\Throwable $e) { + // make sure we dont hard crash if logging fails } } |