b2evolution PHP Cross Reference Blogging Systems

Source: /plugins/tinymce_plugin/tiny_mce/plugins/spellchecker/classes/utils/Logger.php - 268 lines - 5460 bytes - Summary - Text - Print

   1  <?php
   2  /**
   3   * $Id: Logger.php 9 2011-10-24 22:32:00Z fplanque $
   4   *
   5   * @package MCFileManager.filesystems
   6   * @author Moxiecode
   7   * @copyright Copyright  2005, Moxiecode Systems AB, All rights reserved.
   8   */
   9  
  10  // File type contstants
  11  define('MC_LOGGER_DEBUG', 0);
  12  define('MC_LOGGER_INFO', 10);
  13  define('MC_LOGGER_WARN', 20);
  14  define('MC_LOGGER_ERROR', 30);
  15  define('MC_LOGGER_FATAL', 40);
  16  
  17  /**
  18   * Logging utility class. This class handles basic logging with levels, log rotation and custom log formats. It's
  19   * designed to be compact but still powerful and flexible.
  20   */
  21  class Moxiecode_Logger {
  22      // Private fields
  23      var $_path;
  24      var $_filename;
  25      var $_maxSize;
  26      var $_maxFiles;
  27      var $_maxSizeBytes;
  28      var $_level;
  29      var $_format;
  30  
  31      /**
  32       * Constructs a new logger instance.
  33       */
  34  	function Moxiecode_Logger() {
  35          $this->_path = "";
  36          $this->_filename = "{level}.log";
  37          $this->setMaxSize("100k");
  38          $this->_maxFiles = 10;
  39          $this->_level = MC_LOGGER_DEBUG;
  40          $this->_format = "[{time}] [{level}] {message}";
  41      }
  42  
  43      /**
  44       * Sets the current log level, use the MC_LOGGER constants.
  45       *
  46       * @param int $level Log level instance for example MC_LOGGER_DEBUG.
  47       */
  48  	function setLevel($level) {
  49          if (is_string($level)) {
  50              switch (strtolower($level)) {
  51                  case "debug":
  52                      $level = MC_LOGGER_DEBUG;
  53                      break;
  54  
  55                  case "info":
  56                      $level = MC_LOGGER_INFO;
  57                      break;
  58  
  59                  case "warn":
  60                  case "warning":
  61                      $level = MC_LOGGER_WARN;
  62                      break;
  63  
  64                  case "error":
  65                      $level = MC_LOGGER_ERROR;
  66                      break;
  67  
  68                  case "fatal":
  69                      $level = MC_LOGGER_FATAL;
  70                      break;
  71  
  72                  default:
  73                      $level = MC_LOGGER_FATAL;
  74              }
  75          }
  76  
  77          $this->_level = $level;
  78      }
  79  
  80      /**
  81       * Returns the current log level for example MC_LOGGER_DEBUG.
  82       *
  83       * @return int Current log level for example MC_LOGGER_DEBUG.
  84       */
  85  	function getLevel() {
  86          return $this->_level;
  87      }
  88  
  89  	function setPath($path) {
  90          $this->_path = $path;
  91      }
  92  
  93  	function getPath() {
  94          return $this->_path;
  95      }
  96  
  97  	function setFileName($file_name) {
  98          $this->_filename = $file_name;
  99      }
 100  
 101  	function getFileName() {
 102          return $this->_filename;
 103      }
 104  
 105  	function setFormat($format) {
 106          $this->_format = $format;
 107      }
 108  
 109  	function getFormat() {
 110          return $this->_format;
 111      }
 112  
 113  	function setMaxSize($size) {
 114          // Fix log max size
 115          $logMaxSizeBytes = intval(preg_replace("/[^0-9]/", "", $size));
 116  
 117          // Is KB
 118          if (strpos((strtolower($size)), "k") > 0)
 119              $logMaxSizeBytes *= 1024;
 120  
 121          // Is MB
 122          if (strpos((strtolower($size)), "m") > 0)
 123              $logMaxSizeBytes *= (1024 * 1024);
 124  
 125          $this->_maxSizeBytes = $logMaxSizeBytes;
 126          $this->_maxSize = $size;
 127      }
 128  
 129  	function getMaxSize() {
 130          return $this->_maxSize;
 131      }
 132  
 133  	function setMaxFiles($max_files) {
 134          $this->_maxFiles = $max_files;
 135      }
 136  
 137  	function getMaxFiles() {
 138          return $this->_maxFiles;
 139      }
 140  
 141  	function debug($msg) {
 142          $args = func_get_args();
 143          $this->_logMsg(MC_LOGGER_DEBUG, implode(', ', $args));
 144      }
 145  
 146  	function info($msg) {
 147          $args = func_get_args();
 148          $this->_logMsg(MC_LOGGER_INFO, implode(', ', $args));
 149      }
 150  
 151  	function warn($msg) {
 152          $args = func_get_args();
 153          $this->_logMsg(MC_LOGGER_WARN, implode(', ', $args));
 154      }
 155  
 156  	function error($msg) {
 157          $args = func_get_args();
 158          $this->_logMsg(MC_LOGGER_ERROR, implode(', ', $args));
 159      }
 160  
 161  	function fatal($msg) {
 162          $args = func_get_args();
 163          $this->_logMsg(MC_LOGGER_FATAL, implode(', ', $args));
 164      }
 165  
 166  	function isDebugEnabled() {
 167          return $this->_level >= MC_LOGGER_DEBUG;
 168      }
 169  
 170  	function isInfoEnabled() {
 171          return $this->_level >= MC_LOGGER_INFO;
 172      }
 173  
 174  	function isWarnEnabled() {
 175          return $this->_level >= MC_LOGGER_WARN;
 176      }
 177  
 178  	function isErrorEnabled() {
 179          return $this->_level >= MC_LOGGER_ERROR;
 180      }
 181  
 182  	function isFatalEnabled() {
 183          return $this->_level >= MC_LOGGER_FATAL;
 184      }
 185  
 186  	function _logMsg($level, $message) {
 187          $roll = false;
 188  
 189          if ($level < $this->_level)
 190              return;
 191  
 192          $logFile = $this->toOSPath($this->_path . "/" . $this->_filename);
 193  
 194          switch ($level) {
 195              case MC_LOGGER_DEBUG:
 196                  $levelName = "DEBUG";
 197                  break;
 198  
 199              case MC_LOGGER_INFO:
 200                  $levelName = "INFO";
 201                  break;
 202  
 203              case MC_LOGGER_WARN:
 204                  $levelName = "WARN";
 205                  break;
 206  
 207              case MC_LOGGER_ERROR:
 208                  $levelName = "ERROR";
 209                  break;
 210  
 211              case MC_LOGGER_FATAL:
 212                  $levelName = "FATAL";
 213                  break;
 214          }
 215  
 216          $logFile = str_replace('{level}', strtolower($levelName), $logFile);
 217  
 218          $text = $this->_format;
 219          $text = str_replace('{time}', date("Y-m-d H:i:s"), $text);
 220          $text = str_replace('{level}', strtolower($levelName), $text);
 221          $text = str_replace('{message}', $message, $text);
 222          $message = $text . "\r\n";
 223  
 224          // Check filesize
 225          if (file_exists($logFile)) {
 226              $size = @filesize($logFile);
 227  
 228              if ($size + strlen($message) > $this->_maxSizeBytes)
 229                  $roll = true;
 230          }
 231  
 232          // Roll if the size is right
 233          if ($roll) {
 234              for ($i=$this->_maxFiles-1; $i>=1; $i--) {
 235                  $rfile = $this->toOSPath($logFile . "." . $i);
 236                  $nfile = $this->toOSPath($logFile . "." . ($i+1));
 237  
 238                  if (@file_exists($rfile))
 239                      @rename($rfile, $nfile);
 240              }
 241  
 242              @rename($logFile, $this->toOSPath($logFile . ".1"));
 243  
 244              // Delete last logfile
 245              $delfile = $this->toOSPath($logFile . "." . ($this->_maxFiles + 1));
 246              if (@file_exists($delfile))
 247                  @unlink($delfile);
 248          }
 249  
 250          // Append log line
 251          if (($fp = @fopen($logFile, "a")) != null) {
 252              @fputs($fp, $message);
 253              @fflush($fp);
 254              @fclose($fp);
 255          }
 256      }
 257  
 258      /**
 259       * Converts a Unix path to OS specific path.
 260       *
 261       * @param String $path Unix path to convert.
 262       */
 263  	function toOSPath($path) {
 264          return str_replace("/", DIRECTORY_SEPARATOR, $path);
 265      }
 266  }
 267  
 268  ?>

title

Description

title

Description

title

Description

title

title

Body