diff --git a/src/Monolog/Formatter/JsonFormatter.php b/src/Monolog/Formatter/JsonFormatter.php index 96a05917..86966b07 100644 --- a/src/Monolog/Formatter/JsonFormatter.php +++ b/src/Monolog/Formatter/JsonFormatter.php @@ -165,6 +165,10 @@ class JsonFormatter extends NormalizerFormatter return $this->normalizeException($data); } + if (is_resource($data)) { + return parent::normalize($data); + } + return $data; } diff --git a/tests/Monolog/Formatter/JsonFormatterTest.php b/tests/Monolog/Formatter/JsonFormatterTest.php index 24b06cc9..db07a4cd 100644 --- a/tests/Monolog/Formatter/JsonFormatterTest.php +++ b/tests/Monolog/Formatter/JsonFormatterTest.php @@ -114,6 +114,14 @@ class JsonFormatterTest extends TestCase $this->assertContextContainsFormattedException($formattedThrowable, $message); } + public function testDefFormatWithResource() + { + $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false); + $record = $this->getRecord(); + $record['context'] = array('field_resource' => curl_init()); + $this->assertEquals('{"message":"test","context":{"field_resource":"[resource] (curl)"},"level":300,"level_name":"WARNING","channel":"test","datetime":'.json_encode($record['datetime']).',"extra":[]}', $formatter->format($record)); + } + /** * @param string $expected * @param string $actual