Skip to content

Commit

Permalink
add Logger::$logMessageContextSeparator
Browse files Browse the repository at this point in the history
  • Loading branch information
klimov-paul committed Jul 20, 2023
1 parent e96b26e commit d1f8c7b
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 21 additions & 1 deletion src/Logger.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down Expand Up @@ -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
*
Expand Down Expand Up @@ -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);
}

/**
Expand Down
18 changes: 18 additions & 0 deletions tests/LoggerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down

0 comments on commit d1f8c7b

Please sign in to comment.