Просмотр исходного кода

Allow including stack traces in line formatter, fixes #466

Jordi Boggiano 11 лет назад
Родитель
Сommit
1cb39eedb5
1 измененных файлов с 25 добавлено и 1 удалено
  1. 25 1
      src/Monolog/Formatter/LineFormatter.php

+ 25 - 1
src/Monolog/Formatter/LineFormatter.php

@@ -28,6 +28,7 @@ class LineFormatter extends NormalizerFormatter
     protected $format;
     protected $allowInlineLineBreaks;
     protected $ignoreEmptyContextAndExtra;
+    protected $includeStacktraces;
 
     /**
      * @param string $format                     The format of the message
@@ -43,6 +44,24 @@ class LineFormatter extends NormalizerFormatter
         parent::__construct($dateFormat);
     }
 
+    public function includeStacktraces($include = true)
+    {
+        $this->includeStacktraces = $include;
+        if ($this->includeStacktraces) {
+            $this->allowInlineLineBreaks = true;
+        }
+    }
+
+    public function allowInlineLineBreaks($allow = true)
+    {
+        $this->allowInlineLineBreaks = $allow;
+    }
+
+    public function ignoreEmptyContextAndExtra($ignore = true)
+    {
+        $this->ignoreEmptyContextAndExtra = $ignore;
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -99,7 +118,12 @@ class LineFormatter extends NormalizerFormatter
             } while ($previous = $previous->getPrevious());
         }
 
-        return '[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')';
+        $str = '[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')';
+        if ($this->includeStacktraces) {
+            $str .= "\n[stacktrace]\n".$e->getTraceAsString();
+        }
+
+        return $str;
     }
 
     protected function convertToString($data)