Procházet zdrojové kódy

Update for compatibility with actively maintained versions of Zend Server

Jason Davis před 6 roky
rodič
revize
ca3a914276

+ 26 - 20
src/Monolog/Handler/ZendMonitorHandler.php

@@ -17,6 +17,7 @@ use Monolog\Logger;
  * Handler sending logs to Zend Monitor
  *
  * @author  Christian Bergau <cbergau86@gmail.com>
+ * @author  Jason Davis <happydude@jasondavis.net>
  */
 class ZendMonitorHandler extends AbstractProcessingHandler
 {
@@ -25,16 +26,7 @@ class ZendMonitorHandler extends AbstractProcessingHandler
      *
      * @var array
      */
-    protected $levelMap = array(
-        Logger::DEBUG     => 1,
-        Logger::INFO      => 2,
-        Logger::NOTICE    => 3,
-        Logger::WARNING   => 4,
-        Logger::ERROR     => 5,
-        Logger::CRITICAL  => 6,
-        Logger::ALERT     => 7,
-        Logger::EMERGENCY => 0,
-    );
+    protected $levelMap = array();
 
     /**
      * Construct
@@ -46,8 +38,21 @@ class ZendMonitorHandler extends AbstractProcessingHandler
     public function __construct($level = Logger::DEBUG, $bubble = true)
     {
         if (!function_exists('zend_monitor_custom_event')) {
-            throw new MissingExtensionException('You must have Zend Server installed in order to use this handler');
+            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 = array(
+            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);
     }
 
@@ -57,22 +62,23 @@ class ZendMonitorHandler extends AbstractProcessingHandler
     protected function write(array $record)
     {
         $this->writeZendMonitorCustomEvent(
-            $this->levelMap[$record['level']],
+            Logger::getLevelName($record['level']),
             $record['message'],
-            $record['formatted']
+            $record['formatted'],
+            $this->levelMap[$record['level']]
         );
     }
 
     /**
-     * Write a record to Zend Monitor
-     *
-     * @param int    $level
-     * @param string $message
-     * @param array  $formatted
+     * Write to Zend Monitor Events
+     * @param string $type Text displayed in "Class Name (custom)" field
+     * @param string $message Text displayed in "Error String"
+     * @param mixed $formatted Displayed in Custom Variables tab
+     * @param int $severity Set the event severity level (-1,0,1)
      */
-    protected function writeZendMonitorCustomEvent($level, $message, $formatted)
+    protected function writeZendMonitorCustomEvent($type, $message, $formatted, $severity)
     {
-        zend_monitor_custom_event($level, $message, $formatted);
+        zend_monitor_custom_event($type, $message, $formatted, $severity);
     }
 
     /**

+ 7 - 1
tests/Monolog/Handler/ZendMonitorHandlerTest.php

@@ -10,6 +10,7 @@
 
 namespace Monolog\Handler;
 
+use Monolog\Logger;
 use Monolog\TestCase;
 
 class ZendMonitorHandlerTest extends TestCase
@@ -53,7 +54,12 @@ class ZendMonitorHandlerTest extends TestCase
 
         $zendMonitor->expects($this->once())
             ->method('writeZendMonitorCustomEvent')
-            ->with($levelMap[$record['level']], $record['message'], $formatterResult);
+            ->with(
+                Logger::getLevelName($record['level']),
+                $record['message'],
+                $formatterResult,
+                $levelMap[$record['level']]
+            );
 
         $zendMonitor->handle($record);
     }