GelfHandlerTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. use Gelf\MessagePublisher;
  15. use Gelf\Message;
  16. class MockMessagePublisher extends MessagePublisher
  17. {
  18. public function publish(Message $message) {
  19. $this->lastMessage = $message;
  20. }
  21. public $lastMessage = null;
  22. }
  23. class GelfHandlerTest extends TestCase
  24. {
  25. public function setUp()
  26. {
  27. if (!class_exists("Gelf\MessagePublisher")) {
  28. $this->markTestSkipped("mlehner/gelf-php not installed");
  29. }
  30. }
  31. /**
  32. * @covers Monolog\Handler\GelfHandler::__construct
  33. */
  34. public function testConstruct()
  35. {
  36. $handler = new GelfHandler($this->getMessagePublisher());
  37. $this->assertInstanceOf('Monolog\Handler\GelfHandler', $handler);
  38. }
  39. protected function getHandler($messagePublisher)
  40. {
  41. $handler = new GelfHandler($messagePublisher);
  42. return $handler;
  43. }
  44. protected function getMessagePublisher()
  45. {
  46. return new MockMessagePublisher('localhost');
  47. }
  48. public function testDebug()
  49. {
  50. $messagePublisher = $this->getMessagePublisher();
  51. $handler = $this->getHandler($messagePublisher);
  52. $record = $this->getRecord(Logger::DEBUG, "A test debug message");
  53. $handler->handle($record);
  54. $this->assertEquals(7, $messagePublisher->lastMessage->getLevel());
  55. $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
  56. $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
  57. $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
  58. }
  59. public function testWarning()
  60. {
  61. $messagePublisher = $this->getMessagePublisher();
  62. $handler = $this->getHandler($messagePublisher);
  63. $record = $this->getRecord(Logger::WARNING, "A test warning message");
  64. $handler->handle($record);
  65. $this->assertEquals(4, $messagePublisher->lastMessage->getLevel());
  66. $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
  67. $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
  68. $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
  69. }
  70. public function testInjectedGelfMessageFormatter()
  71. {
  72. $messagePublisher = $this->getMessagePublisher();
  73. $handler = $this->getHandler($messagePublisher);
  74. $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX'));
  75. $record = $this->getRecord(Logger::WARNING, "A test warning message");
  76. $record['extra']['blarg'] = 'yep';
  77. $record['context']['from'] = 'logger';
  78. $handler->handle($record);
  79. $this->assertEquals('mysystem', $messagePublisher->lastMessage->getHost());
  80. $this->assertArrayHasKey('_EXTblarg', $messagePublisher->lastMessage->toArray());
  81. $this->assertArrayHasKey('_CTXfrom', $messagePublisher->lastMessage->toArray());
  82. }
  83. }