diff options
-rw-r--r-- | src/Monolog/Processor/PsrLogMessageProcessor.php | 14 | ||||
-rw-r--r-- | tests/Monolog/Processor/PsrLogMessageProcessorTest.php | 17 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/Monolog/Processor/PsrLogMessageProcessor.php b/src/Monolog/Processor/PsrLogMessageProcessor.php index b9a00a4..8078403 100644 --- a/src/Monolog/Processor/PsrLogMessageProcessor.php +++ b/src/Monolog/Processor/PsrLogMessageProcessor.php @@ -20,6 +20,18 @@ namespace Monolog\Processor; */ class PsrLogMessageProcessor { + const SIMPLE_DATE = "Y-m-d\TH:i:sP"; + + private $dateFormat; + + /** + * @param string $dateFormat The format of the timestamp: one supported by DateTime::format + */ + public function __construct(string $dateFormat = null) + { + $this->dateFormat = null === $dateFormat ? static::SIMPLE_DATE : $dateFormat; + } + /** * @param array $record * @return array @@ -34,6 +46,8 @@ class PsrLogMessageProcessor foreach ($record['context'] as $key => $val) { if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) { $replacements['{'.$key.'}'] = $val; + } elseif ($val instanceof \DateTimeInterface) { + $replacements['{'.$key.'}'] = $val->format($this->dateFormat); } elseif (is_object($val)) { $replacements['{'.$key.'}'] = '[object '.get_class($val).']'; } else { diff --git a/tests/Monolog/Processor/PsrLogMessageProcessorTest.php b/tests/Monolog/Processor/PsrLogMessageProcessorTest.php index 77db842..884c9a1 100644 --- a/tests/Monolog/Processor/PsrLogMessageProcessorTest.php +++ b/tests/Monolog/Processor/PsrLogMessageProcessorTest.php @@ -27,8 +27,24 @@ class PsrLogMessageProcessorTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $message['message']); } + public function testCustomDateFormat() + { + $format = "Y-m-d"; + $date = new \DateTime(); + + $proc = new PsrLogMessageProcessor($format); + + $message = $proc([ + 'message' => '{foo}', + 'context' => ['foo' => $date], + ]); + $this->assertEquals($date->format($format), $message['message']); + } + public function getPairs() { + $date = new \DateTime(); + return [ ['foo', 'foo'], ['3', '3'], @@ -36,6 +52,7 @@ class PsrLogMessageProcessorTest extends \PHPUnit_Framework_TestCase [null, ''], [true, '1'], [false, ''], + [$date, $date->format(PsrLogMessageProcessor::SIMPLE_DATE)], [new \stdClass, '[object stdClass]'], [[], '[array]'], ]; |