From d1f8c7b4b0f9cb87c811f5aeb12f129b6c4f6b97 Mon Sep 17 00:00:00 2001 From: Paul Klimov Date: Thu, 20 Jul 2023 12:02:59 +0300 Subject: [PATCH] add `Logger::$logMessageContextSeparator` --- CHANGELOG.md | 1 + src/Logger.php | 22 +++++++++++++++++++++- tests/LoggerTest.php | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27682ac..9a60a20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Yii1 PSR Log extension - Enh: Added ability for global log context setup at `PsrLogger` (klimov-paul) - Enh: Added `PsrLogger::new()` static method for a new instance creation (klimov-paul) +- Enh: Added `Logger::$logMessageContextSeparator` allowing to control string separator for log context in Yii log messages (klimov-paul) 1.0.0, July 19, 2023 diff --git a/src/Logger.php b/src/Logger.php index e99fb94..5cb6f36 100644 --- a/src/Logger.php +++ b/src/Logger.php @@ -52,6 +52,12 @@ class Logger extends CLogger */ public $logContextMaxNestedLevel = 3; + /** + * @var string string, which used to separated log context representation from actual log message, when writing Yii log. + * @since 1.0.1 + */ + public $logMessageContextSeparator = "\n\n"; + /** * @var \Psr\Log\LoggerInterface|null related PSR logger. */ @@ -102,6 +108,20 @@ public function enableYiiLog(bool $enable = true): self return $this; } + /** + * @see $logMessageContextSeparator + * @since 1.0.1 + * + * @param string $logMessageContextSeparator string, which used to separated log context representation from actual log message, when writing Yii log. + * @return static self reference. + */ + public function logMessageContextSeparator(string $logMessageContextSeparator): self + { + $this->logMessageContextSeparator = $logMessageContextSeparator; + + return $this; + } + /** * @see $logContextMaxNestedLevel * @@ -196,7 +216,7 @@ protected function createMessageSuffixFromContext(array $logContext): string $logContext = $this->formatLogContext($logContext); - return "\n\n" . $this->serializeLogContext($logContext); + return $this->logMessageContextSeparator . $this->serializeLogContext($logContext); } /** diff --git a/tests/LoggerTest.php b/tests/LoggerTest.php index c653ccb..d950631 100644 --- a/tests/LoggerTest.php +++ b/tests/LoggerTest.php @@ -185,6 +185,24 @@ public function testWriteYiiLogContext(): void $this->assertStringContainsString('test-exception-message', $logs[0][0]); } + /** + * @depends testWriteYiiLogContext + */ + public function testYiiLogContextSeparator(): void + { + $logger = (new Logger()) + ->enableYiiLog(true) + ->logMessageContextSeparator('||||'); + + $logger->log('test message', CLogger::LEVEL_INFO, ['foo' => 'bar']); + + $logs = $logger->getLogs(); + $logger->flush(); + + $this->assertFalse(empty($logs[0])); + $this->assertStringContainsString('test message||||{', $logs[0][0]); + } + /** * @depends testWritePsrLog */