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

Add logging of exception line and file path to gelf message

This commit is contained in:
Tarjei Huse
2013-10-27 08:29:08 +01:00
parent c600461b0f
commit b78d997638
2 changed files with 36 additions and 0 deletions

View File

@@ -89,6 +89,13 @@ class GelfMessageFormatter extends NormalizerFormatter
$message->setAdditional($this->contextPrefix . $key, is_scalar($val) ? $val : $this->toJson($val));
}
if (null === $message->getFile() && isset($record['context']['exception'])) {
if (preg_match("/^(.+):([0-9]+)$/", $record['context']['exception']['file'], $matches)) {
$message->setFile($matches[1]);
$message->setLine($matches[2]);
}
}
return $message;
}
}

View File

@@ -119,6 +119,35 @@ class GelfMessageFormatterTest extends \PHPUnit_Framework_TestCase
}
/**
* @covers Monolog\Formatter\GelfMessageFormatter::format
*/
public function testFormatWithContextContainingException()
{
$formatter = new GelfMessageFormatter();
$record = array(
'level' => Logger::ERROR,
'level_name' => 'ERROR',
'channel' => 'meh',
'context' => array('from' => 'logger', 'exception' => [
'class' => '\Exception',
'file' => '/some/file/in/dir.php:56',
'trace' => ['/some/file/1.php:23', '/some/file/2.php:3']
]),
'datetime' => new \DateTime("@0"),
'extra' => array(),
'message' => 'log'
);
$message = $formatter->format($record);
$this->assertInstanceOf('Gelf\Message', $message);
$this->assertEquals("/some/file/in/dir.php", $message->getFile());
$this->assertEquals("56", $message->getLine());
}
/**
* @covers Monolog\Formatter\GelfMessageFormatter::format
*/