⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logger_backend_file.class.php

📁 ProjectPier 源码 很好的项目管理程序
💻 PHP
字号:
<?php  /**  * Logger backand that is able to save session data into a text file  *  * @package Logger  * @subpackage backends  * @http://www.projectpier.org/  */  class Logger_Backend_File implements Logger_Backend {        /** New line **/    const NEW_LINE = "\r\n";    const SET_SEPARATOR = '===============================================================================';    const SESSION_SEPARATOR = '-------------------------------------------------------------------------------';      /**    * Path of the log file. If file exists it need to be writable, if not parent     * folder need to exist and be writable    *    * @var string    */    private $log_file;        /**    * Constructor    *    * @param void    * @return Logger_Backend_File    */    function __construct($log_file) {      $this->setLogFile($log_file);    } // __construct        // ---------------------------------------------------    //  Backend interface implementation and utils    // ---------------------------------------------------        /**    * Save array of sessions into a single session set    *    * @param array $sessions    * @return boolean    */    public function saveSessionSet($sessions) {      if (!is_array($sessions)) {        return false;      } // if            $session_names = array();      $session_outputs = array();      foreach ($sessions as $session) {        if ($session instanceof Logger_Session) {          $session_names[] = $session->getName();          $session_outputs[] = $this->renderSessionContent($session);        } // if      } // if            if (!count($session_names) || !count($session_outputs)) {        return false;      } // if            $output = self::SET_SEPARATOR . self::NEW_LINE . 'Session set: ' . implode(', ', $session_names) . self::NEW_LINE . self::SET_SEPARATOR;      foreach ($session_outputs as $session_output) {        $output .= self::NEW_LINE . $session_output;      } // foreach            $output .= self::NEW_LINE . self::SET_SEPARATOR;      return file_put_contents($this->getLogFile(), self::NEW_LINE . $output . self::NEW_LINE, FILE_APPEND);    } // saveSessionSet        /**    * Save session object into the file    *    * @param Logger_Session $session    * @return boolean    */    public function saveSession(Logger_Session $session) {      $output = $this->renderSessionContent($session);      return file_put_contents($this->getLogFile(), self::NEW_LINE . $output . self::NEW_LINE, FILE_APPEND);    } // saveSession        /**    * Prepare session output as string    *    * @param Logger_Session $session    * @return string    */    private function renderSessionContent(Logger_Session $session) {      $session_executed_in = microtime(true) - $session->getSessionStart();      $counter = 0;            $output = 'Session "' . $session->getName() . '" started at ' . gmdate(DATE_ISO8601, floor($session->getSessionStart())) . "\n";      if ($session->isEmpty()) {        $output .= 'Empty session';      } else {        foreach ($session->getEntries() as $entry) {          $counter++;          $output .= "#$counter " . Logger::severityToString($entry->getSeverity()) . ': ' . $entry->getFormattedMessage('    ') . "\n";        } // foreach      } // if            $output .= "Time since start: " . $session_executed_in . " seconds\n" . self::SESSION_SEPARATOR;      return str_replace("\n", self::NEW_LINE, $output);    } // renderSessionContent        // ---------------------------------------------------    //  Getters and setters    // ---------------------------------------------------        /**    * Get log_file    *    * @param null    * @return string    */    function getLogFile() {      if (trim($this->log_file) && !is_file($this->log_file)) {        file_put_contents($this->log_file, '<?php die(); ?>');      } // if      return $this->log_file;    } // getLogFile        /**    * Set log_file value    *    * @param string $value    * @return null    * @throws FileNotWriableError If file exists and is not writable    * @throws DirDnxError If file does not exists and parent directory does not exists    * @throws DirNotWritableError If file does not exists, but parent exists and is not writable    */    function setLogFile($value) {      $file_path = $value;      if (is_file($file_path)) {        if (!file_is_writable($file_path)) {          throw new FileNotWriableError($file_path);        } // if      } else {        $folder_path = dirname($file_path);        if (!is_dir($folder_path)) {          throw new DirDnxError($folder_path);        } // if        if (!folder_is_writable($folder_path)) {          throw new DirNotWritableError($folder_path);        } // if      } // if      $this->log_file = $value;    } // setLogFile    } // Logger_Backend_File?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -