ZendMonitorHandler.php 2.2 KB

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\Formatter\NormalizerFormatter;
  12. use Monolog\Logger;
  13. /**
  14. * Handler sending logs to Zend Monitor
  15. *
  16. * @author Christian Bergau <cbergau86@gmail.com>
  17. */
  18. class ZendMonitorHandler extends AbstractProcessingHandler
  19. {
  20. /**
  21. * Monolog level / ZendMonitor Custom Event priority map
  22. *
  23. * @var array
  24. */
  25. protected $levelMap = array(
  26. Logger::DEBUG => 1,
  27. Logger::INFO => 2,
  28. Logger::NOTICE => 3,
  29. Logger::WARNING => 4,
  30. Logger::ERROR => 5,
  31. Logger::CRITICAL => 6,
  32. Logger::ALERT => 7,
  33. Logger::EMERGENCY => 0,
  34. );
  35. /**
  36. * Construct
  37. *
  38. * @param int $level
  39. * @param bool $bubble
  40. * @throws MissingExtensionException
  41. */
  42. public function __construct($level = Logger::DEBUG, $bubble = true)
  43. {
  44. if (!function_exists('zend_monitor_custom_event')) {
  45. throw new MissingExtensionException('You must have Zend Server installed in order to use this handler');
  46. }
  47. parent::__construct($level, $bubble);
  48. }
  49. /**
  50. * {@inheritdoc}
  51. */
  52. protected function write(array $record)
  53. {
  54. $this->writeZendMonitorCustomEvent(
  55. $this->levelMap[$record['level']],
  56. $record['message'],
  57. $record['formatted']
  58. );
  59. }
  60. /**
  61. * Write a record to Zend Monitor
  62. *
  63. * @param int $level
  64. * @param string $message
  65. * @param array $formatted
  66. */
  67. protected function writeZendMonitorCustomEvent($level, $message, $formatted)
  68. {
  69. zend_monitor_custom_event($level, $message, $formatted);
  70. }
  71. /**
  72. * {@inheritdoc}
  73. */
  74. public function getDefaultFormatter()
  75. {
  76. return new NormalizerFormatter();
  77. }
  78. /**
  79. * Get the level map
  80. *
  81. * @return array
  82. */
  83. public function getLevelMap()
  84. {
  85. return $this->levelMap;
  86. }
  87. }