1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-07-30 09:50:26 +02:00

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
This commit is contained in:
Elnur Abdurrakhimov
2017-06-18 19:30:53 -04:00
committed by Jordi Boggiano
parent 71f16ca3d5
commit 91a0f40927
2 changed files with 17 additions and 17 deletions

View File

@@ -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";

View File

@@ -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']);
}
}