diff --git a/lib/private/Log.php b/lib/private/Log.php index 4af833d778fb69862a702682bbd968dd187ae845..04148d549d6bc3ad53bbb3780d96bc5f53615e68 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 } }