diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php index c98f21208b..1af989588d 100644 --- a/lib/private/log/owncloud.php +++ b/lib/private/log/owncloud.php @@ -72,7 +72,7 @@ class OC_Log_Owncloud { } catch (Exception $e) { $timezone = new DateTimeZone('UTC'); } - $time = new DateTime(null, $timezone); + $time = DateTime::createFromFormat("U.u", microtime(true), $timezone); $request = \OC::$server->getRequest(); $reqId = $request->getId(); $remoteAddr = $request->getRemoteAddress(); diff --git a/tests/lib/log/owncloud.php b/tests/lib/log/owncloud.php new file mode 100644 index 0000000000..d977583612 --- /dev/null +++ b/tests/lib/log/owncloud.php @@ -0,0 +1,67 @@ +. + */ + +class Test_Log_Owncloud extends Test\TestCase +{ + private $restore_logfile; + private $restore_logdateformat; + + protected function setUp() { + parent::setUp(); + $restore_logfile = OC_Config::getValue("logfile"); + $restore_logdateformat = OC_Config::getValue('logdateformat'); + + OC_Config::setValue("logfile", OC_Config::getValue('datadirectory') . "/logtest"); + OC_Log_Owncloud::init(); + } + protected function tearDown() { + if (isset($this->restore_logfile)) { + OC_Config::setValue("logfile", $this->restore_logfile); + } else { + OC_Config::deleteKey("logfile"); + } + if (isset($this->restore_logdateformat)) { + OC_Config::setValue("logdateformat", $this->restore_logdateformat); + } else { + OC_Config::deleteKey("restore_logdateformat"); + } + OC_Log_Owncloud::init(); + parent::tearDown(); + } + + public function testMicrosecondsLogTimestamp() { + # delete old logfile + unlink(OC_Config::getValue('logfile')); + + # set format & write log line + OC_Config::setValue('logdateformat', 'u'); + OC_Log_Owncloud::write('test', 'message', \OCP\Util::ERROR); + + # read log line + $handle = @fopen(OC_Config::getValue('logfile'), 'r'); + $line = fread($handle, 1000); + fclose($handle); + + # check timestamp has microseconds part + $values = (array) json_decode($line); + $microseconds = $values['time']; + $this->assertNotEquals(0, $microseconds); + + } + + +}