diff --git a/composer.json b/composer.json index 3332e0f..077fa62 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "minimum-stability": "stable", "require": { "php": "^8.1", + "ext-mbstring": "*", "jrosset/exceptionhelper": "^1.0", "jrosset/lasterrorexception": "^1.0", "monolog/monolog": "^3.3" diff --git a/src/ExtendedMonolog/ExceptionLogger.php b/src/ExtendedMonolog/ExceptionLogger.php index 6847baa..3ed8761 100644 --- a/src/ExtendedMonolog/ExceptionLogger.php +++ b/src/ExtendedMonolog/ExceptionLogger.php @@ -17,7 +17,7 @@ class ExceptionLogger extends Logger implements ExceptionLoggerInterface { public function exception (Level|int $level, Throwable $exception, array $context = []): void { $this->addRecord( $level, - ExceptionHelper::toString($exception, false), + ExceptionHelper::toString($exception, false) . PHP_EOL, array_merge( [ 'exception' => $exception, diff --git a/src/ExtendedMonolog/LogFileFormatter.php b/src/ExtendedMonolog/LogFileFormatter.php index 37049ee..8ec78bd 100644 --- a/src/ExtendedMonolog/LogFileFormatter.php +++ b/src/ExtendedMonolog/LogFileFormatter.php @@ -26,6 +26,32 @@ class LogFileFormatter extends LineFormatter { * @inheritDoc */ public function format (LogRecord $record): string { - return preg_replace('/((?with( + message: preg_replace_callback( + '/(?:(?normalize($record->message) + ) + ); + //endregion + //region Format the record + $output = parent::format($record); + //endregion + //region Remove newlines at end (introduced by context, extra or record message itself) + $output = preg_replace('/(?:(?setFormatter( + new LineFormatter( + '[%datetime%] %level_name% : %message%', + 'Y-m-d H:i:s', + true + ) + ), new LogDirectoryHandler(__DIR__ . '/logs/'), ] ); try { - $logger->info('START'); + $logger->info('======= test =======' . PHP_EOL . 'START' . PHP_EOL); throw new RuntimeException('An unexpected error occurs'); /** @noinspection PhpUnreachableStatementInspection */ - $logger->info('END'); + $logger->info('END' . PHP_EOL); } catch (Throwable $exception) { $logger->exception(Level::Error, $exception);