diff --git a/src/Monolog/Formatter/LineFormatter.php b/src/Monolog/Formatter/LineFormatter.php index e563503f..8c671aa9 100644 --- a/src/Monolog/Formatter/LineFormatter.php +++ b/src/Monolog/Formatter/LineFormatter.php @@ -309,6 +309,6 @@ class LineFormatter extends NormalizerFormatter private function stacktracesParserCustom(string $trace): string { - return implode("\n", array_filter(array_map($this->stacktracesParser, explode("\n", $trace)), fn ($line) => $line !== false && $line !== '')); + return implode("\n", array_filter(array_map($this->stacktracesParser, explode("\n", $trace)), fn ($line) => is_string($line) && trim($line) !== '')); } } diff --git a/tests/Monolog/Formatter/LineFormatterTest.php b/tests/Monolog/Formatter/LineFormatterTest.php index 8408a77b..6f08f76d 100644 --- a/tests/Monolog/Formatter/LineFormatterTest.php +++ b/tests/Monolog/Formatter/LineFormatterTest.php @@ -193,10 +193,9 @@ class LineFormatterTest extends TestCase }); $message = $formatter->format($this->getRecord(Level::Critical, context: ['exception' => new \RuntimeException('Foo')])); - $trace = explode('[stacktrace]', $message, 2)[1]; - $this->assertStringNotContainsString('#', $trace); + $this->assertSame(PHP_EOL . PHP_EOL . '"} []' . PHP_EOL, $trace); } public function testDefFormatWithPreviousException()