mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-05 20:57:36 +02:00
Accept incomplete records in GelfMessageFormatter, closes #482
This commit is contained in:
@@ -67,19 +67,29 @@ class GelfMessageFormatter extends NormalizerFormatter
|
||||
public function format(array $record)
|
||||
{
|
||||
$record = parent::format($record);
|
||||
|
||||
if (!isset($record['datetime'], $record['message'], $record['level'])) {
|
||||
throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, '.var_export($record, true).' given');
|
||||
}
|
||||
|
||||
$message = new Message();
|
||||
$message
|
||||
->setTimestamp($record['datetime'])
|
||||
->setShortMessage((string) $record['message'])
|
||||
->setFacility($record['channel'])
|
||||
->setHost($this->systemName)
|
||||
->setLine(isset($record['extra']['line']) ? $record['extra']['line'] : null)
|
||||
->setFile(isset($record['extra']['file']) ? $record['extra']['file'] : null)
|
||||
->setLevel($this->logLevels[$record['level']]);
|
||||
|
||||
// Do not duplicate these values in the additional fields
|
||||
unset($record['extra']['line']);
|
||||
unset($record['extra']['file']);
|
||||
if (isset($record['channel'])) {
|
||||
$message->setFacility($record['channel']);
|
||||
}
|
||||
if (isset($record['extra']['line'])) {
|
||||
$message->setLine($record['extra']['line']);
|
||||
unset($record['extra']['line']);
|
||||
}
|
||||
if (isset($record['extra']['file'])) {
|
||||
$message->setFile($record['extra']['file']);
|
||||
unset($record['extra']['file']);
|
||||
}
|
||||
|
||||
foreach ($record['extra'] as $key => $val) {
|
||||
$message->setAdditional($this->extraPrefix . $key, is_scalar($val) ? $val : $this->toJson($val));
|
||||
|
@@ -80,6 +80,21 @@ class GelfMessageFormatterTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals(14, $message->getLine());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Monolog\Formatter\GelfMessageFormatter::format
|
||||
* @expectedException InvalidArgumentException
|
||||
*/
|
||||
public function testFormatInvalidFails()
|
||||
{
|
||||
$formatter = new GelfMessageFormatter();
|
||||
$record = array(
|
||||
'level' => Logger::ERROR,
|
||||
'level_name' => 'ERROR',
|
||||
);
|
||||
|
||||
$formatter->format($record);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Monolog\Formatter\GelfMessageFormatter::format
|
||||
*/
|
||||
|
Reference in New Issue
Block a user