소스 검색

Do not include message levels if it is already included in tag

fordnox 10 년 전
부모
커밋
034e895a6d
2개의 변경된 파일25개의 추가작업 그리고 8개의 파일을 삭제
  1. 14 5
      src/Monolog/Formatter/FluentdFormatter.php
  2. 11 3
      tests/Monolog/Formatter/FluentdFormatterTest.php

+ 14 - 5
src/Monolog/Formatter/FluentdFormatter.php

@@ -35,6 +35,9 @@ namespace Monolog\Formatter;
 
 
 class FluentdFormatter implements FormatterInterface
 class FluentdFormatter implements FormatterInterface
 {
 {
+    /**
+     * @var bool $levelTag - should message level be a part of the fluentd tag
+     */
     protected $levelTag = false;
     protected $levelTag = false;
 
 
     public function __construct($levelTag = false)
     public function __construct($levelTag = false)
@@ -58,16 +61,22 @@ class FluentdFormatter implements FormatterInterface
             $tag .= '.' . strtolower($record['level_name']);
             $tag .= '.' . strtolower($record['level_name']);
         }
         }
 
 
+        $message = array(
+            'message' => $record['message'],
+            'extra' => $record['extra']
+        );
+
+        if (!$this->levelTag) {
+            $message['level'] = $record['level'];
+            $message['level_name'] = $record['level_name'];
+        }
+
         return '['
         return '['
         . '"' . $tag . '"'
         . '"' . $tag . '"'
         . ', '
         . ', '
         . $record['datetime']->getTimestamp()
         . $record['datetime']->getTimestamp()
         . ', '
         . ', '
-        . json_encode(array(
-            'message' => $record['message'],
-            'level' => $record['level'],
-            'level_name' => $record['level_name'],
-            'extra' => $record['extra']))
+        . json_encode($message)
         . ']';
         . ']';
     }
     }
 
 

+ 11 - 3
tests/Monolog/Formatter/FluentdFormatterTest.php

@@ -35,18 +35,26 @@ class FluentdFormatterTest extends TestCase
      */
      */
     public function testFormat()
     public function testFormat()
     {
     {
-
         $record = $this->getRecord(Logger::WARNING);
         $record = $this->getRecord(Logger::WARNING);
         $record['datetime'] = new \DateTime("@0");
         $record['datetime'] = new \DateTime("@0");
 
 
         $formatter = new FluentdFormatter();
         $formatter = new FluentdFormatter();
         $this->assertEquals(
         $this->assertEquals(
-            '["test", 0, {"message":"test","level":300,"level_name":"WARNING","extra":[]}]',
+            '["test", 0, {"message":"test","extra":[],"level":300,"level_name":"WARNING"}]',
             $formatter->format($record));
             $formatter->format($record));
+    }
+
+    /**
+     * @covers Monolog\Formatter\FluentdFormatter::format
+     */
+    public function testFormatWithTag()
+    {
+        $record = $this->getRecord(Logger::ERROR);
+        $record['datetime'] = new \DateTime("@0");
 
 
         $formatter = new FluentdFormatter(true);
         $formatter = new FluentdFormatter(true);
         $this->assertEquals(
         $this->assertEquals(
-            '["test.warning", 0, {"message":"test","level":300,"level_name":"WARNING","extra":[]}]',
+            '["test.error", 0, {"message":"test","extra":[]}]',
             $formatter->format($record));
             $formatter->format($record));
     }
     }
 }
 }