mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-07 05:36:45 +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)
|
public function format(array $record)
|
||||||
{
|
{
|
||||||
$record = parent::format($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 = new Message();
|
||||||
$message
|
$message
|
||||||
->setTimestamp($record['datetime'])
|
->setTimestamp($record['datetime'])
|
||||||
->setShortMessage((string) $record['message'])
|
->setShortMessage((string) $record['message'])
|
||||||
->setFacility($record['channel'])
|
|
||||||
->setHost($this->systemName)
|
->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']]);
|
->setLevel($this->logLevels[$record['level']]);
|
||||||
|
|
||||||
// Do not duplicate these values in the additional fields
|
if (isset($record['channel'])) {
|
||||||
unset($record['extra']['line']);
|
$message->setFacility($record['channel']);
|
||||||
unset($record['extra']['file']);
|
}
|
||||||
|
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) {
|
foreach ($record['extra'] as $key => $val) {
|
||||||
$message->setAdditional($this->extraPrefix . $key, is_scalar($val) ? $val : $this->toJson($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());
|
$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
|
* @covers Monolog\Formatter\GelfMessageFormatter::format
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user