mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-02 19:27:37 +02:00
Added $datetime parameter to addRecord method to optionally log into the past/future
This commit is contained in:
@@ -304,11 +304,12 @@ class Logger implements LoggerInterface, ResettableInterface
|
|||||||
* @param int $level The logging level
|
* @param int $level The logging level
|
||||||
* @param string $message The log message
|
* @param string $message The log message
|
||||||
* @param mixed[] $context The log context
|
* @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
|
* @return bool Whether the record has been processed
|
||||||
*
|
*
|
||||||
* @phpstan-param Level $level
|
* @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) {
|
if ($this->detectCycles) {
|
||||||
$this->logDepth += 1;
|
$this->logDepth += 1;
|
||||||
@@ -338,7 +339,7 @@ class Logger implements LoggerInterface, ResettableInterface
|
|||||||
'level' => $level,
|
'level' => $level,
|
||||||
'level_name' => $levelName,
|
'level_name' => $levelName,
|
||||||
'channel' => $this->name,
|
'channel' => $this->name,
|
||||||
'datetime' => new DateTimeImmutable($this->microsecondTimestamps, $this->timezone),
|
'datetime' => $datetime ?? new DateTimeImmutable($this->microsecondTimestamps, $this->timezone),
|
||||||
'extra' => [],
|
'extra' => [],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -739,6 +739,28 @@ class LoggerTest extends \PHPUnit\Framework\TestCase
|
|||||||
$this->assertNotSame($uid1, $processorUid1->getUid());
|
$this->assertNotSame($uid1, $processorUid1->getUid());
|
||||||
$this->assertNotSame($uid2, $processorUid2->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
|
class LoggingHandler implements HandlerInterface
|
||||||
|
Reference in New Issue
Block a user