]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php
WordPress 3.8.3-scripts
[autoinstalls/wordpress.git] / wp-includes / js / tinymce / plugins / spellchecker / classes / utils / Logger.php
1 <?php
2 /**
3  * $Id: Logger.class.php 10 2007-05-27 10:55:12Z spocke $
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 ?>