فهرست منبع

Merge branch '1.x'

Jordi Boggiano 6 سال پیش
والد
کامیت
a8a0dbb778
4فایلهای تغییر یافته به همراه28 افزوده شده و 14 حذف شده
  1. 14 13
      .travis.yml
  2. 4 0
      src/Monolog/Formatter/JsonFormatter.php
  3. 2 1
      src/Monolog/Handler/RedisHandler.php
  4. 8 0
      tests/Monolog/Formatter/JsonFormatterTest.php

+ 14 - 13
.travis.yml

@@ -1,25 +1,26 @@
 language: php
 
 sudo: false
-dist: trusty
-
-php:
-  - 7.2
-  - 7.3
-  - 7.4
-  - nightly
 
 cache:
   directories:
     - $HOME/.composer/cache
 
 matrix:
-    include:
-        - php: 7.2
-          env: deps=low
-    fast_finish: true
-    allow_failures:
-      - php: nightly
+  fast_finish: true
+  include:
+    - php: 7.2
+      dist: bionic
+    - php: 7.3
+      dist: bionic
+    - php: 7.4
+      dist: bionic
+    - php: nightly
+      dist: bionic
+    - php: 7.2
+      env: deps=low
+  allow_failures:
+    - php: nightly
 
 before_script:
   - echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini

+ 4 - 0
src/Monolog/Formatter/JsonFormatter.php

@@ -157,6 +157,10 @@ class JsonFormatter extends NormalizerFormatter
             return $this->normalizeException($data, $depth);
         }
 
+        if (is_resource($data)) {
+            return parent::normalize($data);
+        }
+
         return $data;
     }
 

+ 2 - 1
src/Monolog/Handler/RedisHandler.php

@@ -71,7 +71,8 @@ class RedisHandler extends AbstractProcessingHandler
     protected function writeCapped(array $record): void
     {
         if ($this->redisClient instanceof \Redis) {
-            $this->redisClient->multi()
+            $mode = defined('\Redis::MULTI') ? \Redis::MULTI : 1;
+            $this->redisClient->multi($mode)
                 ->rpush($this->redisKey, $record["formatted"])
                 ->ltrim($this->redisKey, -$this->capSize, -1)
                 ->exec();

+ 8 - 0
tests/Monolog/Formatter/JsonFormatterTest.php

@@ -185,6 +185,14 @@ class JsonFormatterTest extends TestCase
         );
     }
 
+    public function testDefFormatWithResource()
+    {
+        $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
+        $record = $this->getRecord();
+        $record['context'] = ['field_resource' => curl_init()];
+        $this->assertEquals('{"message":"test","context":{"field_resource":"[resource(curl)]"},"level":300,"level_name":"WARNING","channel":"test","datetime":"'.$record['datetime']->format('Y-m-d\TH:i:s.uP').'","extra":{}}', $formatter->format($record));
+    }
+
     /**
      * @param string $expected
      * @param string $actual