* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Monolog\Handler; use Monolog\TestCase; use Monolog\Logger; use Monolog\Formatter\GelfMessageFormatter; class GelfHandlerTest extends TestCase { public function setUp() { if (!class_exists("Gelf\MessagePublisher") || !class_exists("Gelf\Message")) { $this->markTestSkipped("mlehner/gelf-php not installed"); } require_once __DIR__ . '/GelfMocks.php'; } /** * @covers Monolog\Handler\GelfHandler::__construct */ public function testConstruct() { $handler = new GelfHandler($this->getMessagePublisher()); $this->assertInstanceOf('Monolog\Handler\GelfHandler', $handler); } protected function getHandler($messagePublisher) { $handler = new GelfHandler($messagePublisher); return $handler; } protected function getMessagePublisher() { return new MockMessagePublisher('localhost'); } public function testDebug() { $messagePublisher = $this->getMessagePublisher(); $handler = $this->getHandler($messagePublisher); $record = $this->getRecord(Logger::DEBUG, "A test debug message"); $handler->handle($record); $this->assertEquals(LOG_DEBUG, $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() { $messagePublisher = $this->getMessagePublisher(); $handler = $this->getHandler($messagePublisher); $record = $this->getRecord(Logger::WARNING, "A test warning message"); $handler->handle($record); $this->assertEquals(LOG_WARNING, $messagePublisher->lastMessage->getLevel()); $this->assertEquals('test', $messagePublisher->lastMessage->getFacility()); $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage()); $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage()); } 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'; $handler->handle($record); $this->assertEquals('mysystem', $messagePublisher->lastMessage->getHost()); $this->assertArrayHasKey('_EXTblarg', $messagePublisher->lastMessage->toArray()); $this->assertArrayHasKey('_CTXfrom', $messagePublisher->lastMessage->toArray()); } }