소스 검색

Add INF/NaN normalization, fixes #523

Jordi Boggiano 11 년 전
부모
커밋
d434bb4794
2개의 변경된 파일15개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      src/Monolog/Formatter/NormalizerFormatter.php
  2. 6 0
      tests/Monolog/Formatter/NormalizerFormatterTest.php

+ 9 - 0
src/Monolog/Formatter/NormalizerFormatter.php

@@ -58,6 +58,15 @@ class NormalizerFormatter implements FormatterInterface
     protected function normalize($data)
     {
         if (null === $data || is_scalar($data)) {
+            if (is_float($data)) {
+                if (is_infinite($data)) {
+                    return ($data > 0 ? '' : '-') . 'INF';
+                }
+                if (is_nan($data)) {
+                    return 'NaN';
+                }
+            }
+
             return $data;
         }
 

+ 6 - 0
tests/Monolog/Formatter/NormalizerFormatterTest.php

@@ -28,6 +28,9 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase
             'context' => array(
                 'foo' => 'bar',
                 'baz' => 'qux',
+                'inf' => INF,
+                '-inf' => -INF,
+                'nan' => acos(4),
             ),
         ));
 
@@ -45,6 +48,9 @@ class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase
             'context' => array(
                 'foo' => 'bar',
                 'baz' => 'qux',
+                'inf' => 'INF',
+                '-inf' => '-INF',
+                'nan' => 'NaN',
             )
         ), $formatted);
     }