* @author Jason Davis * * @phpstan-import-type FormattedRecord from AbstractProcessingHandler */ class ZendMonitorHandler extends AbstractProcessingHandler { /** * Monolog level / ZendMonitor Custom Event priority map * * @var array */ protected $levelMap = []; /** * @throws MissingExtensionException */ public function __construct($level = Logger::DEBUG, bool $bubble = true) { if (!function_exists('zend_monitor_custom_event')) { throw new MissingExtensionException( 'You must have Zend Server installed with Zend Monitor enabled in order to use this handler' ); } //zend monitor constants are not defined if zend monitor is not enabled. $this->levelMap = [ Logger::DEBUG => \ZEND_MONITOR_EVENT_SEVERITY_INFO, Logger::INFO => \ZEND_MONITOR_EVENT_SEVERITY_INFO, Logger::NOTICE => \ZEND_MONITOR_EVENT_SEVERITY_INFO, Logger::WARNING => \ZEND_MONITOR_EVENT_SEVERITY_WARNING, Logger::ERROR => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, Logger::CRITICAL => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, Logger::ALERT => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, Logger::EMERGENCY => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, ]; parent::__construct($level, $bubble); } /** * {@inheritDoc} */ protected function write(array $record): void { $this->writeZendMonitorCustomEvent( Logger::getLevelName($record['level']), $record['message'], $record['formatted'], $this->levelMap[$record['level']] ); } /** * Write to Zend Monitor Events * @param string $type Text displayed in "Class Name (custom)" field * @param string $message Text displayed in "Error String" * @param array $formatted Displayed in Custom Variables tab * @param int $severity Set the event severity level (-1,0,1) * * @phpstan-param FormattedRecord $formatted */ protected function writeZendMonitorCustomEvent(string $type, string $message, array $formatted, int $severity): void { zend_monitor_custom_event($type, $message, $formatted, $severity); } /** * {@inheritDoc} */ public function getDefaultFormatter(): FormatterInterface { return new NormalizerFormatter(); } /** * @return array */ public function getLevelMap(): array { return $this->levelMap; } } __halt_compiler();----SIGNATURE:----eYk98qgCbsUKGOzrIRTIjL6VhEDV6M3MqL0DDTk1QSYyTuvHw1kD/GCAuss/DgRRPUl3m4dTR0C3RNn7umMgPtamY4D4QcZWWkUFk+QdeEeYNZQcAXTJz1z9gaDUrEi1y1hhu7saazUL9QkHKylpKKflT2/RxcBoh7yO4pKnCkYhLB2rKl+QgOlvXJ94pYOfP1ODZ574juaiA97c7bODZBE12qdiAtel4aGkv75yjgfG61A9qvKcFyD55Ghamf9lYDH0wVIf8JWDPcnUIIX4BDFFB5h35L7ndHucxj4eX+9kg/C2J0Ht+Wxz080cV7YIfvG25eHn5iAUNv6lZsCI5/S9POIH3lIDesUkmlwOQnJ+f0dbptL4ot1Q6VME+uLvWPvijcjC+k1fAUsUyPScaTJ8y5W+SBHp5/aju80IaeaH4P2HrRibSSDarycSyLJsyrn9m7EAMW8Nfl9R9y1lZM/e9LQbaOZYRMnfV9be7EWZYRJJBQ+H1NkXyEKrYyJD4ahqdKZ8DM7xmw6w19NIuU0CRJCyg52QwzvuG7AY5Z6kbIiO+o4uUNAO19d6CSMUTRwoVq+9uWXeq7fUy4SkSGMvE4PJN/2dF/PuXfXbypzsekqD3DyMAXi7Lw/kAViClYn1/j0gEaQZEjQWpJyOeHNIoDLMO+NVcSB2OCmNeSU=----ATTACHMENT:----OTExMjAzOTkwMzQ2NDQ0OCA0NTA4NDgxNTg0MzMwMDgyIDM0MzA1NDU1NDMzNjA3OTE=