1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-07-30 18:00:17 +02:00

Added $datetime parameter to addRecord method to optionally log into the past/future

This commit is contained in:
henning
2022-06-07 16:13:46 +02:00
committed by Jordi Boggiano
parent 8ac56aa42b
commit 24e414c993
2 changed files with 29 additions and 6 deletions

View File

@@ -301,14 +301,15 @@ class Logger implements LoggerInterface, ResettableInterface
/**
* Adds a log record.
*
* @param int $level The logging level
* @param string $message The log message
* @param mixed[] $context The log context
* @return bool Whether the record has been processed
* @param int $level The logging level
* @param string $message The log message
* @param mixed[] $context The log context
* @param DateTimeImmutable $datetime Optional log date to log into the past or future
* @return bool Whether the record has been processed
*
* @phpstan-param Level $level
*/
public function addRecord(int $level, string $message, array $context = []): bool
public function addRecord(int $level, string $message, array $context = [], DateTimeImmutable $datetime = null): bool
{
if ($this->detectCycles) {
$this->logDepth += 1;
@@ -338,7 +339,7 @@ class Logger implements LoggerInterface, ResettableInterface
'level' => $level,
'level_name' => $levelName,
'channel' => $this->name,
'datetime' => new DateTimeImmutable($this->microsecondTimestamps, $this->timezone),
'datetime' => $datetime ?? new DateTimeImmutable($this->microsecondTimestamps, $this->timezone),
'extra' => [],
];

View File

@@ -739,6 +739,28 @@ class LoggerTest extends \PHPUnit\Framework\TestCase
$this->assertNotSame($uid1, $processorUid1->getUid());
$this->assertNotSame($uid2, $processorUid2->getUid());
}
/**
* @covers Logger::addRecord
*/
public function testLogWithDateTime()
{
foreach ([true, false] as $microseconds) {
$logger = new Logger(__METHOD__);
$loggingHandler = new LoggingHandler($logger);
$testHandler = new TestHandler();
$logger->pushHandler($loggingHandler);
$logger->pushHandler($testHandler);
$datetime = (new DateTimeImmutable($microseconds))->modify('2022-03-04 05:06:07');
$logger->addRecord(Logger::DEBUG, 'test', [], $datetime);
list($record) = $testHandler->getRecords();
$this->assertEquals($datetime->format('Y-m-d H:i:s'), $record['datetime']->format('Y-m-d H:i:s'));
}
}
}
class LoggingHandler implements HandlerInterface