Przeglądaj źródła

Merge remote-tracking branch 'bd808/set-timezone'

Jordi Boggiano 10 lat temu
rodzic
commit
40f676b0d0
2 zmienionych plików z 33 dodań i 0 usunięć
  1. 10 0
      src/Monolog/Logger.php
  2. 23 0
      tests/Monolog/LoggerTest.php

+ 10 - 0
src/Monolog/Logger.php

@@ -614,4 +614,14 @@ class Logger implements LoggerInterface
     {
         return $this->addRecord(static::EMERGENCY, $message, $context);
     }
+
+    /**
+     * Set the timezone to be used for the timestamp of log records.
+     *
+     * @param string $tz Timezone name
+     */
+    public static function setTimezone($tz)
+    {
+        self::$timezone = new \DateTimeZone($tz);
+    }
 }

+ 23 - 0
tests/Monolog/LoggerTest.php

@@ -421,4 +421,27 @@ class LoggerTest extends \PHPUnit_Framework_TestCase
             array('emerg',  Logger::EMERGENCY),
         );
     }
+
+    /**
+     * @dataProvider setTimezoneProvider
+     * @covers Monolog\Logger::setTimezone
+     */
+    public function testSetTimezone($tz)
+    {
+        Logger::setTimezone($tz);
+        $logger = new Logger('foo');
+        $handler = new TestHandler;
+        $logger->pushHandler($handler);
+        $logger->info('test');
+        list($record) = $handler->getRecords();
+        $this->assertEquals($tz, $record['datetime']->getTimezone()->getName());
+    }
+
+    public function setTimezoneProvider()
+    {
+        return array_map(
+            function ($tz) { return array($tz); },
+            \DateTimeZone::listIdentifiers()
+        );
+    }
 }