formatEvent($event, $this->pattern); $dt = $this->getEventDateTime($event); $e = "$dt ERROR TEST (LoggerLayoutXml): testmessage in NA at NA".PHP_EOL; self::assertEquals($e, $v); } public function testWarnLayout() { $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage"); $v = $this->formatEvent($event, $this->pattern); $dt = $this->getEventDateTime($event); $e = "$dt WARN TEST (LoggerLayoutXml): testmessage in NA at NA".PHP_EOL; self::assertEquals($e, $v); } public function testInfoLayout() { $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelInfo(), "testmessage"); $v = $this->formatEvent($event, $this->pattern); $dt = $this->getEventDateTime($event); $e = "$dt INFO TEST (LoggerLayoutXml): testmessage in NA at NA".PHP_EOL; self::assertEquals($e, $v); } public function testDebugLayout() { $event = new LoggerLoggingEvent("LoggerLayoutXml", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage"); $v = $this->formatEvent($event, $this->pattern); $dt = $this->getEventDateTime($event); $e = "$dt DEBUG TEST (LoggerLayoutXml): testmessage in NA at NA".PHP_EOL; self::assertEquals($e, $v); } public function testTraceLayout() { $event = new LoggerLoggingEvent("LoggerLayoutXml2", new Logger("TEST"), LoggerLevel::getLevelTrace(), "testmessage"); $v = $this->formatEvent($event, $this->pattern); $dt = $this->getEventDateTime($event); $e = "$dt TRACE TEST (LoggerLayoutXml2): testmessage in NA at NA".PHP_EOL; self::assertEquals($e, $v); } public function testClassnamePattern() { $event = new LoggerLoggingEvent("LoggerLayoutPatternTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage"); $v = $this->formatEvent($event, '%C'); $dt = $this->getEventDateTime($event); $e = "LoggerLayoutPatternTest"; self::assertEquals($e, $v); } /** * Returns the datetime of an event in "Y-m-d H:i:s.u" format. This is required because * the PHP date() function does not handle the microseconds on windows (returns zeros). * * @see http://www.php.net/manual/en/function.date.php#93752 */ private function getEventDateTime($event) { $ts = $event->getTimeStamp(); $micros = round(($ts - floor($ts)) * 1000); // microseconds to 3 decimal places $micros = str_pad($micros, 3, '0', STR_PAD_LEFT); return date('Y-m-d H:i:s', $ts).".$micros"; } private function formatEvent($event, $pattern) { $layout = new LoggerLayoutPattern(); $layout->setConversionPattern($pattern); return $layout->format($event); } }