Jelajahi Sumber

Fix SoapFault detail with nested object

Fixes #1431
James Gilliland 5 tahun lalu
induk
melakukan
2066ce89d0

+ 7 - 2
src/Monolog/Formatter/LineFormatter.php

@@ -180,8 +180,13 @@ class LineFormatter extends NormalizerFormatter
                 $str .= ' faultactor: ' . $e->faultactor;
             }
 
-            if (isset($e->detail) && (is_string($e->detail) || is_object($e->detail) || is_array($e->detail))) {
-                $str .= ' detail: ' . (is_string($e->detail) ? $e->detail : reset($e->detail));
+            if (isset($e->detail)) {
+                if  (is_string($e->detail)) {
+                    $str .= ' detail: ' . $e->detail;
+                }
+                elseif (is_object($e->detail) || is_array($e->detail)) {
+                    $str .= ' detail: ' . Utils::jsonEncode($e->detail);
+                }
             }
         }
         $str .= '): ' . $e->getMessage() . ' at ' . $e->getFile() . ':' . $e->getLine() . ')';

+ 7 - 2
src/Monolog/Formatter/NormalizerFormatter.php

@@ -202,8 +202,13 @@ class NormalizerFormatter implements FormatterInterface
                 $data['faultactor'] = $e->faultactor;
             }
 
-            if (isset($e->detail) && (is_string($e->detail) || is_object($e->detail) || is_array($e->detail))) {
-                $data['detail'] = is_string($e->detail) ? $e->detail : reset($e->detail);
+            if (isset($e->detail)) {
+                if  (is_string($e->detail)) {
+                    $data['detail'] = $e->detail;
+                }
+                elseif (is_object($e->detail) || is_array($e->detail)) {
+                    $data['detail'] = Utils::jsonEncode($e->detail);
+                }
             }
         }