Selaa lähdekoodia

Fix NewRelicHandler error when using LineFormatter

Michael Moussa 9 vuotta sitten
vanhempi
commit
09c4cca32b

+ 16 - 12
src/Monolog/Handler/NewRelicHandler.php

@@ -91,23 +91,27 @@ class NewRelicHandler extends AbstractProcessingHandler
             newrelic_notice_error($record['message']);
         }
 
-        foreach ($record['formatted']['context'] as $key => $parameter) {
-            if (is_array($parameter) && $this->explodeArrays) {
-                foreach ($parameter as $paramKey => $paramValue) {
-                    $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue);
+        if (isset($record['formatted']['context'])) {
+            foreach ($record['formatted']['context'] as $key => $parameter) {
+                if (is_array($parameter) && $this->explodeArrays) {
+                    foreach ($parameter as $paramKey => $paramValue) {
+                        $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue);
+                    }
+                } else {
+                    $this->setNewRelicParameter('context_' . $key, $parameter);
                 }
-            } else {
-                $this->setNewRelicParameter('context_' . $key, $parameter);
             }
         }
 
-        foreach ($record['formatted']['extra'] as $key => $parameter) {
-            if (is_array($parameter) && $this->explodeArrays) {
-                foreach ($parameter as $paramKey => $paramValue) {
-                    $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue);
+        if (isset($record['formatted']['extra'])) {
+            foreach ($record['formatted']['extra'] as $key => $parameter) {
+                if (is_array($parameter) && $this->explodeArrays) {
+                    foreach ($parameter as $paramKey => $paramValue) {
+                        $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue);
+                    }
+                } else {
+                    $this->setNewRelicParameter('extra_' . $key, $parameter);
                 }
-            } else {
-                $this->setNewRelicParameter('extra_' . $key, $parameter);
             }
         }
     }

+ 8 - 0
tests/Monolog/Handler/NewRelicHandlerTest.php

@@ -11,6 +11,7 @@
 
 namespace Monolog\Handler;
 
+use Monolog\Formatter\LineFormatter;
 use Monolog\TestCase;
 use Monolog\Logger;
 
@@ -104,6 +105,13 @@ class NewRelicHandlerTest extends TestCase
         $this->assertEquals($expected, self::$customParameters);
     }
 
+    public function testThehandlerCanHandleTheRecordsFormattedUsingTheLineFormatter()
+    {
+        $handler = new StubNewRelicHandler();
+        $handler->setFormatter(new LineFormatter());
+        $handler->handle($this->getRecord(Logger::ERROR));
+    }
+
     public function testTheAppNameIsNullByDefault()
     {
         $handler = new StubNewRelicHandler();