mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-07 21:56:31 +02:00
Support ext-mongodb's UTCDateTime class in MongoDBFormatter
The legacy driver (i.e. ext-mongo) and MongoDate are not supported on PHP 7.
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
namespace Monolog\Formatter;
|
namespace Monolog\Formatter;
|
||||||
|
|
||||||
|
use MongoDB\BSON\UTCDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Formats a record for use with the MongoDBHandler.
|
* Formats a record for use with the MongoDBHandler.
|
||||||
*
|
*
|
||||||
@@ -100,6 +102,13 @@ class MongoDBFormatter implements FormatterInterface
|
|||||||
|
|
||||||
protected function formatDate(\DateTime $value, $nestingLevel)
|
protected function formatDate(\DateTime $value, $nestingLevel)
|
||||||
{
|
{
|
||||||
return new \MongoDate($value->getTimestamp());
|
$seconds = (int) $value->format('U');
|
||||||
|
$milliseconds = (int) $value->format('u') / 1000;
|
||||||
|
|
||||||
|
if ($seconds < 0) {
|
||||||
|
return new UTCDateTime($seconds * 1000 - $milliseconds);
|
||||||
|
} else {
|
||||||
|
return new UTCDateTime($seconds * 1000 + $milliseconds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,8 +20,8 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
public function setUp()
|
public function setUp()
|
||||||
{
|
{
|
||||||
if (!class_exists('MongoDate')) {
|
if (!class_exists('MongoDB\BSON\UTCDateTime')) {
|
||||||
$this->markTestSkipped('mongo extension not installed');
|
$this->markTestSkipped('ext-mongodb not installed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -75,8 +75,8 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals(Logger::WARNING, $formattedRecord['level']);
|
$this->assertEquals(Logger::WARNING, $formattedRecord['level']);
|
||||||
$this->assertEquals(Logger::getLevelName(Logger::WARNING), $formattedRecord['level_name']);
|
$this->assertEquals(Logger::getLevelName(Logger::WARNING), $formattedRecord['level_name']);
|
||||||
$this->assertEquals('test', $formattedRecord['channel']);
|
$this->assertEquals('test', $formattedRecord['channel']);
|
||||||
$this->assertInstanceOf('\MongoDate', $formattedRecord['datetime']);
|
$this->assertInstanceOf('MongoDB\BSON\UTCDateTime', $formattedRecord['datetime']);
|
||||||
$this->assertEquals('0.00000000 1391212800', $formattedRecord['datetime']->__toString());
|
$this->assertEquals('1453410690123', $formattedRecord['datetime']->__toString());
|
||||||
$this->assertEquals(array(), $formattedRecord['extra']);
|
$this->assertEquals(array(), $formattedRecord['extra']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
$record = array(
|
$record = array(
|
||||||
'message' => 'some log message',
|
'message' => 'some log message',
|
||||||
'context' => array(
|
'context' => array(
|
||||||
'stuff' => new \DateTime('2014-02-01 02:31:33'),
|
'stuff' => new \DateTime('1969-01-21T21:11:30.123456+00:00'),
|
||||||
'some_object' => $someObject,
|
'some_object' => $someObject,
|
||||||
'context_string' => 'some string',
|
'context_string' => 'some string',
|
||||||
'context_int' => 123456,
|
'context_int' => 123456,
|
||||||
@@ -98,7 +98,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -106,8 +106,9 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
$formattedRecord = $formatter->format($record);
|
$formattedRecord = $formatter->format($record);
|
||||||
|
|
||||||
$this->assertCount(5, $formattedRecord['context']);
|
$this->assertCount(5, $formattedRecord['context']);
|
||||||
$this->assertInstanceOf('\MongoDate', $formattedRecord['context']['stuff']);
|
$this->assertInstanceOf('MongoDB\BSON\UTCDateTime', $formattedRecord['context']['stuff']);
|
||||||
$this->assertEquals('0.00000000 1391221893', $formattedRecord['context']['stuff']->__toString());
|
$this->assertEquals('-29731710123', $formattedRecord['context']['stuff']->__toString());
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
array(
|
array(
|
||||||
'foo' => 'something',
|
'foo' => 'something',
|
||||||
@@ -144,7 +145,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -180,7 +181,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -219,7 +220,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -248,7 +249,7 @@ class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
'level' => Logger::WARNING,
|
'level' => Logger::WARNING,
|
||||||
'level_name' => Logger::getLevelName(Logger::WARNING),
|
'level_name' => Logger::getLevelName(Logger::WARNING),
|
||||||
'channel' => 'test',
|
'channel' => 'test',
|
||||||
'datetime' => new \DateTime('2014-02-01 00:00:00'),
|
'datetime' => new \DateTime('2016-01-21T21:11:30.123456+00:00'),
|
||||||
'extra' => array(),
|
'extra' => array(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user