GelfHandlerTest.php 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /*
  3. * This file is part of the Monolog package.
  4. *
  5. * (c) Jordi Boggiano <j.boggiano@seld.be>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Monolog\Handler;
  11. use Monolog\TestCase;
  12. use Monolog\Logger;
  13. use Monolog\Formatter\GelfMessageFormatter;
  14. class GelfHandlerTest extends TestCase
  15. {
  16. public function setUp()
  17. {
  18. if (!class_exists("Gelf\MessagePublisher") || !class_exists("Gelf\Message")) {
  19. $this->markTestSkipped("mlehner/gelf-php not installed");
  20. }
  21. require_once __DIR__ . '/GelfMocks.php';
  22. }
  23. /**
  24. * @covers Monolog\Handler\GelfHandler::__construct
  25. */
  26. public function testConstruct()
  27. {
  28. $handler = new GelfHandler($this->getMessagePublisher());
  29. $this->assertInstanceOf('Monolog\Handler\GelfHandler', $handler);
  30. }
  31. protected function getHandler($messagePublisher)
  32. {
  33. $handler = new GelfHandler($messagePublisher);
  34. return $handler;
  35. }
  36. protected function getMessagePublisher()
  37. {
  38. return new MockMessagePublisher('localhost');
  39. }
  40. public function testDebug()
  41. {
  42. $messagePublisher = $this->getMessagePublisher();
  43. $handler = $this->getHandler($messagePublisher);
  44. $record = $this->getRecord(Logger::DEBUG, "A test debug message");
  45. $handler->handle($record);
  46. $this->assertEquals(LOG_DEBUG, $messagePublisher->lastMessage->getLevel());
  47. $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
  48. $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
  49. $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
  50. }
  51. public function testWarning()
  52. {
  53. $messagePublisher = $this->getMessagePublisher();
  54. $handler = $this->getHandler($messagePublisher);
  55. $record = $this->getRecord(Logger::WARNING, "A test warning message");
  56. $handler->handle($record);
  57. $this->assertEquals(LOG_WARNING, $messagePublisher->lastMessage->getLevel());
  58. $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
  59. $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
  60. $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
  61. }
  62. public function testInjectedGelfMessageFormatter()
  63. {
  64. $messagePublisher = $this->getMessagePublisher();
  65. $handler = $this->getHandler($messagePublisher);
  66. $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX'));
  67. $record = $this->getRecord(Logger::WARNING, "A test warning message");
  68. $record['extra']['blarg'] = 'yep';
  69. $record['context']['from'] = 'logger';
  70. $handler->handle($record);
  71. $this->assertEquals('mysystem', $messagePublisher->lastMessage->getHost());
  72. $this->assertArrayHasKey('_EXTblarg', $messagePublisher->lastMessage->toArray());
  73. $this->assertArrayHasKey('_CTXfrom', $messagePublisher->lastMessage->toArray());
  74. }
  75. }