path = $config->target; if (substr($this->path, 0, 6) !== 'php://' && false === file_exists(dirname($this->path))) { throw new ConfigurationError('Log path "' . dirname($this->path) . '" does not exist'); } try { $this->write(''); // Avoid to handle such errors on every write access } catch (Exception $e) { throw new ConfigurationError('Cannot write to log file "' . $this->path . '" (' . $e->getMessage() . ')'); } } /** * Log a message with the given severity * * @param int $severity The severity to use * @param string $message The message to log */ public function log($severity, $message) { $this->write(date('c') . ' ' . $this->getSeverityString($severity) . ' ' . $message . PHP_EOL); } /** * Return a string representation for the given severity * * @param string $severity The severity to use * * @return string The string representation of the severity * * @throws Exception In case the given severity is unknown */ protected function getSeverityString($severity) { switch ($severity) { case Logger::$ERROR: return '- ERROR -'; case Logger::$WARNING: return '- WARNING -'; case Logger::$INFO: return '- INFO -'; case Logger::$DEBUG: return '- DEBUG -'; default: throw new Exception('Unknown severity "' . $severity . '"'); } } /** * Write a message to the path * * @param string $text The message to write * * @throws Exception In case write acess to the path failed */ protected function write($text) { $file = new File($this->path, 'a'); $file->fwrite($text); $file->fflush(); } }