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:
@@ -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' => [],
|
||||
];
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user