diff --git a/composer.json b/composer.json index 0939dd49..a5cc28d1 100644 --- a/composer.json +++ b/composer.json @@ -18,14 +18,14 @@ }, "require-dev": { "phpunit/phpunit": "~3.7.0", - "mlehner/gelf-php": "1.0.*", + "graylog2/gelf-php": "~1.0", "raven/raven": "0.5.*", "ruflin/elastica": "0.90.*", "doctrine/couchdb": "dev-master", "aws/aws-sdk-php": "~2.4.8" }, "suggest": { - "mlehner/gelf-php": "Allow sending log messages to a GrayLog2 server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "raven/raven": "Allow sending log messages to a Sentry server", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", "ruflin/elastica": "Allow sending log messages to an Elastic Search server", diff --git a/src/Monolog/Handler/GelfHandler.php b/src/Monolog/Handler/GelfHandler.php index 34d48e75..6de44dee 100644 --- a/src/Monolog/Handler/GelfHandler.php +++ b/src/Monolog/Handler/GelfHandler.php @@ -11,29 +11,29 @@ namespace Monolog\Handler; -use Gelf\IMessagePublisher; +use Gelf\Publisher; use Monolog\Logger; -use Monolog\Handler\AbstractProcessingHandler; use Monolog\Formatter\GelfMessageFormatter; /** * Handler to send messages to a Graylog2 (http://www.graylog2.org) server * * @author Matt Lehner + * @author Benjamin Zikarsky */ class GelfHandler extends AbstractProcessingHandler { /** - * @var Gelf\IMessagePublisher the publisher object that sends the message to the server + * @var Publisher the publisher object that sends the message to the server */ protected $publisher; /** - * @param Gelf\IMessagePublisher $publisher a publisher object - * @param integer $level The minimum logging level at which this handler will be triggered - * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not + * @param Publisher $publisher a publisher object + * @param integer $level The minimum logging level at which this handler will be triggered + * @param boolean $bubble Whether the messages that are handled can bubble up the stack or not */ - public function __construct(IMessagePublisher $publisher, $level = Logger::DEBUG, $bubble = true) + public function __construct(Publisher $publisher, $level = Logger::DEBUG, $bubble = true) { parent::__construct($level, $bubble); diff --git a/tests/Monolog/Formatter/GelfMessageFormatterTest.php b/tests/Monolog/Formatter/GelfMessageFormatterTest.php index d8867d9f..12393676 100644 --- a/tests/Monolog/Formatter/GelfMessageFormatterTest.php +++ b/tests/Monolog/Formatter/GelfMessageFormatterTest.php @@ -18,8 +18,8 @@ class GelfMessageFormatterTest extends \PHPUnit_Framework_TestCase { public function setUp() { - if (!class_exists("Gelf\Message")) { - $this->markTestSkipped("mlehner/gelf-php not installed"); + if (!class_exists('\Gelf\Message')) { + $this->markTestSkipped("graylog2/gelf-php not installed"); } } @@ -47,7 +47,7 @@ class GelfMessageFormatterTest extends \PHPUnit_Framework_TestCase $this->assertEquals('meh', $message->getFacility()); $this->assertEquals(null, $message->getLine()); $this->assertEquals(null, $message->getFile()); - $this->assertEquals(3, $message->getLevel()); + $this->assertEquals(3, $message->getSyslogLevel()); $this->assertNotEmpty($message->getHost()); $formatter = new GelfMessageFormatter('mysystem'); diff --git a/tests/Monolog/Handler/GelfHandlerTest.php b/tests/Monolog/Handler/GelfHandlerTest.php index 8e9b9f8a..a14a1a9d 100644 --- a/tests/Monolog/Handler/GelfHandlerTest.php +++ b/tests/Monolog/Handler/GelfHandlerTest.php @@ -11,6 +11,7 @@ namespace Monolog\Handler; +use Gelf\Message; use Monolog\TestCase; use Monolog\Logger; use Monolog\Formatter\GelfMessageFormatter; @@ -19,11 +20,9 @@ class GelfHandlerTest extends TestCase { public function setUp() { - if (!class_exists("Gelf\MessagePublisher") || !class_exists("Gelf\Message")) { - $this->markTestSkipped("mlehner/gelf-php not installed"); + if (!class_exists('\Gelf\Publisher') || !class_exists('\Gelf\Message')) { + $this->markTestSkipped("graylog2/gelf-php not installed"); } - - require_once __DIR__ . '/GelfMocks.php'; } /** @@ -44,51 +43,79 @@ class GelfHandlerTest extends TestCase protected function getMessagePublisher() { - return new MockMessagePublisher('localhost'); + return $this->getMock('\Gelf\Publisher', array('publish'), array(), '', false); } public function testDebug() { + $record = $this->getRecord(Logger::DEBUG, "A test debug message"); + $expectedMessage = new Message(); + $expectedMessage + ->setLevel(7) + ->setFacility("test") + ->setShortMessage($record['message']) + ->setTimestamp($record['datetime']) + ; + $messagePublisher = $this->getMessagePublisher(); + $messagePublisher->expects($this->once()) + ->method('publish') + ->with($expectedMessage); + $handler = $this->getHandler($messagePublisher); - $record = $this->getRecord(Logger::DEBUG, "A test debug message"); + $handler->handle($record); - $this->assertEquals(7, $messagePublisher->lastMessage->getLevel()); - $this->assertEquals('test', $messagePublisher->lastMessage->getFacility()); - $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage()); - $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage()); } public function testWarning() { + $record = $this->getRecord(Logger::WARNING, "A test warning message"); + $expectedMessage = new Message(); + $expectedMessage + ->setLevel(4) + ->setFacility("test") + ->setShortMessage($record['message']) + ->setTimestamp($record['datetime']) + ; + $messagePublisher = $this->getMessagePublisher(); + $messagePublisher->expects($this->once()) + ->method('publish') + ->with($expectedMessage); + $handler = $this->getHandler($messagePublisher); - $record = $this->getRecord(Logger::WARNING, "A test warning message"); - $handler->handle($record); - $this->assertEquals(4, $messagePublisher->lastMessage->getLevel()); - $this->assertEquals('test', $messagePublisher->lastMessage->getFacility()); - $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage()); - $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage()); + $handler->handle($record); } public function testInjectedGelfMessageFormatter() { - $messagePublisher = $this->getMessagePublisher(); - $handler = $this->getHandler($messagePublisher); - - $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX')); - $record = $this->getRecord(Logger::WARNING, "A test warning message"); $record['extra']['blarg'] = 'yep'; $record['context']['from'] = 'logger'; + + $expectedMessage = new Message(); + $expectedMessage + ->setLevel(4) + ->setFacility("test") + ->setHost("mysystem") + ->setShortMessage($record['message']) + ->setTimestamp($record['datetime']) + ->setAdditional("EXTblarg", 'yep') + ->setAdditional("CTXfrom", 'logger') + ; + + $messagePublisher = $this->getMessagePublisher(); + $messagePublisher->expects($this->once()) + ->method('publish') + ->with($expectedMessage); + + $handler = $this->getHandler($messagePublisher); + $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX')); $handler->handle($record); - $this->assertEquals('mysystem', $messagePublisher->lastMessage->getHost()); - $this->assertArrayHasKey('_EXTblarg', $messagePublisher->lastMessage->toArray()); - $this->assertArrayHasKey('_CTXfrom', $messagePublisher->lastMessage->toArray()); } } diff --git a/tests/Monolog/Handler/GelfMocks.php b/tests/Monolog/Handler/GelfMocks.php deleted file mode 100644 index dda87114..00000000 --- a/tests/Monolog/Handler/GelfMocks.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Gelf\MessagePublisher; -use Gelf\Message; - -class MockMessagePublisher extends MessagePublisher -{ - public function publish(Message $message) - { - $this->lastMessage = $message; - } - - public $lastMessage = null; -}