summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElnur Abdurrakhimov <elnur@elnur.pro>2017-06-18 19:30:53 -0400
committerJordi Boggiano <j.boggiano@seld.be>2017-06-19 01:30:53 +0200
commit91a0f40927b58e01579ea12469eef5ce2a833687 (patch)
tree269ce32df18ef18ee8b573e94abbf9a844ed53bf
parent71f16ca3d5e10c4ba84d48c46e8e9a0033795f3b (diff)
downloadmonolog-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.php8
-rw-r--r--tests/Monolog/Formatter/LogstashFormatterTest.php26
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']);
}
}