diff options
author | Elnur Abdurrakhimov <elnur@elnur.pro> | 2017-06-18 19:30:53 -0400 |
---|---|---|
committer | Jordi Boggiano <j.boggiano@seld.be> | 2017-06-19 01:30:53 +0200 |
commit | 91a0f40927b58e01579ea12469eef5ce2a833687 (patch) | |
tree | 269ce32df18ef18ee8b573e94abbf9a844ed53bf | |
parent | 71f16ca3d5e10c4ba84d48c46e8e9a0033795f3b (diff) | |
download | monolog-91a0f40927b58e01579ea12469eef5ce2a833687.zip monolog-91a0f40927b58e01579ea12469eef5ce2a833687.tar.gz monolog-91a0f40927b58e01579ea12469eef5ce2a833687.tar.bz2 |
LogstashFormatter: format context and extra fields as JSON objects (#976)
BC Break
* For Logstash, format context as object instead of individual fields
* For Logstash, format extra as object instead of individual fields
-rw-r--r-- | src/Monolog/Formatter/LogstashFormatter.php | 8 | ||||
-rw-r--r-- | tests/Monolog/Formatter/LogstashFormatterTest.php | 26 |
2 files changed, 17 insertions, 17 deletions
diff --git a/src/Monolog/Formatter/LogstashFormatter.php b/src/Monolog/Formatter/LogstashFormatter.php index 0c4fdcd..3cf31dd 100644 --- a/src/Monolog/Formatter/LogstashFormatter.php +++ b/src/Monolog/Formatter/LogstashFormatter.php @@ -90,14 +90,10 @@ class LogstashFormatter extends NormalizerFormatter $message['type'] = $this->applicationName; } if (!empty($record['extra'])) { - foreach ($record['extra'] as $key => $val) { - $message[$this->extraPrefix . $key] = $val; - } + $message[$this->extraPrefix.'extra'] = $record['extra']; } if (!empty($record['context'])) { - foreach ($record['context'] as $key => $val) { - $message[$this->contextPrefix . $key] = $val; - } + $message[$this->contextPrefix.'context'] = $record['context']; } return $this->toJson($message) . "\n"; diff --git a/tests/Monolog/Formatter/LogstashFormatterTest.php b/tests/Monolog/Formatter/LogstashFormatterTest.php index 3040c02..2ca9f55 100644 --- a/tests/Monolog/Formatter/LogstashFormatterTest.php +++ b/tests/Monolog/Formatter/LogstashFormatterTest.php @@ -74,8 +74,8 @@ class LogstashFormatterTest extends \PHPUnit\Framework\TestCase $message = json_decode($formatter->format($record), true); - $this->assertEquals('test', $message['file']); - $this->assertEquals(14, $message['line']); + $this->assertEquals('test', $message['extra']['file']); + $this->assertEquals(14, $message['extra']['line']); } /** @@ -96,15 +96,17 @@ class LogstashFormatterTest extends \PHPUnit\Framework\TestCase $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('ctxt_from', $message); - $this->assertEquals('logger', $message['ctxt_from']); + $this->assertArrayHasKey('ctxt_context', $message); + $this->assertArrayHasKey('from', $message['ctxt_context']); + $this->assertEquals('logger', $message['ctxt_context']['from']); // Test with extraPrefix $formatter = new LogstashFormatter('test', null, null, 'CTX'); $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('CTXfrom', $message); - $this->assertEquals('logger', $message['CTXfrom']); + $this->assertArrayHasKey('CTXcontext', $message); + $this->assertArrayHasKey('from', $message['CTXcontext']); + $this->assertEquals('logger', $message['CTXcontext']['from']); } /** @@ -125,15 +127,17 @@ class LogstashFormatterTest extends \PHPUnit\Framework\TestCase $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('key', $message); - $this->assertEquals('pair', $message['key']); + $this->assertArrayHasKey('extra', $message); + $this->assertArrayHasKey('key', $message['extra']); + $this->assertEquals('pair', $message['extra']['key']); // Test with extraPrefix $formatter = new LogstashFormatter('test', null, 'EXT', 'ctxt_'); $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('EXTkey', $message); - $this->assertEquals('pair', $message['EXTkey']); + $this->assertArrayHasKey('EXTextra', $message); + $this->assertArrayHasKey('key', $message['EXTextra']); + $this->assertEquals('pair', $message['EXTextra']['key']); } public function testFormatWithApplicationNameV1() @@ -178,6 +182,6 @@ class LogstashFormatterTest extends \PHPUnit\Framework\TestCase $this->assertEquals('ERROR', $message['level']); $this->assertEquals('test', $message['type']); $this->assertEquals('hostname', $message['host']); - $this->assertEquals('ÖWN; FBCR/OrangeEspaña; Versão/4.0; Färist', $message['user_agent']); + $this->assertEquals('ÖWN; FBCR/OrangeEspaña; Versão/4.0; Färist', $message['extra']['user_agent']); } } |