From b3f039339d7a8173c7b441dbaa572ccacb712b54 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 10 Sep 2014 16:41:01 +0100 Subject: [PATCH] Support objects/arrays/resources a bit better, refs #410 --- .../Processor/PsrLogMessageProcessor.php | 8 ++-- .../Processor/PsrLogMessageProcessorTest.php | 45 +++++++++++++++++++ 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 tests/Monolog/Processor/PsrLogMessageProcessorTest.php diff --git a/src/Monolog/Processor/PsrLogMessageProcessor.php b/src/Monolog/Processor/PsrLogMessageProcessor.php index 4a98c6c1..c2686ce5 100644 --- a/src/Monolog/Processor/PsrLogMessageProcessor.php +++ b/src/Monolog/Processor/PsrLogMessageProcessor.php @@ -32,10 +32,12 @@ class PsrLogMessageProcessor $replacements = array(); foreach ($record['context'] as $key => $val) { - if (is_null($val) || - is_scalar($val) || - (is_object($val) && method_exists($val, "__toString"))) { + if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) { $replacements['{'.$key.'}'] = $val; + } elseif (is_object($val)) { + $replacements['{'.$key.'}'] = '[object '.get_class($val).']'; + } else { + $replacements['{'.$key.'}'] = '['.gettype($val).']'; } } diff --git a/tests/Monolog/Processor/PsrLogMessageProcessorTest.php b/tests/Monolog/Processor/PsrLogMessageProcessorTest.php new file mode 100644 index 00000000..595e4382 --- /dev/null +++ b/tests/Monolog/Processor/PsrLogMessageProcessorTest.php @@ -0,0 +1,45 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\Processor\PsrLogMessageProcessor; + +class PsrLogMessageProcessorTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider getPairs + */ + public function testReplacement($val, $expected) + { + $proc = new PsrLogMessageProcessor; + + $message = $proc(array( + 'message' => '{foo}', + 'context' => array('foo' => $val) + )); + $this->assertEquals($expected, $message['message']); + } + + public function getPairs() + { + return array( + array('foo', 'foo'), + array('3', '3'), + array(3, '3'), + array(null, ''), + array(true, '1'), + array(false, ''), + array(new \stdClass, '[object stdClass]'), + array(array(), '[array]'), + ); + } +}