ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilLog.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
18class ilLog
19{
20
26 public $path;
27 public $filename;
28 public $tag;
30
36 public $FATAL;
37
43 public $WARNING;
44
50 public $MESSAGE;
51
52 public $fp = false;
53
64 public function __construct($a_log_path, $a_log_file, $a_tag = "", $a_enabled = true, $a_log_level = null)
65 {
66 // init vars
67 include_once './Services/Logging/classes/public/class.ilLogLevel.php';
68
69 $this->FATAL = ilLogLevel::CRITICAL;
70 $this->WARNING = ilLogLevel::WARNING;
71 $this->MESSAGE = ilLogLevel::INFO;
72
73 $this->default_log_level= $this->WARNING;
74 $this->current_log_level = $this->setLogLevel($a_log_level);
75
76 $this->path = ($a_log_path) ? $a_log_path : ILIAS_ABSOLUTE_PATH;
77 $this->filename = ($a_log_file) ? $a_log_file : "ilias.log";
78 $this->tag = ($a_tag == "") ? "unknown" : $a_tag;
79 $this->enabled = (bool) $a_enabled;
80
81 $this->setLogFormat(@date("[y-m-d H:i:s] ") . "[" . $this->tag . "] ");
82
83 $this->open();
84 }
85
93 public function setLogLevel($a_log_level)
94 {
95 switch (strtolower($a_log_level)) {
96 case "fatal":
97 return $this->FATAL;
98 case "warning":
99 return $this->WARNING;
100 case "message":
101 return $this->MESSAGE;
102 default:
103 return $this->default_log_level;
104 }
105 }
106
114 public function checkLogLevel($a_log_level)
115 {
116 if (empty($a_log_level)) {
117 return $this->default_log_level;
118 }
119
120 $level = (int) $a_log_level;
121
122 if ($a_log_level != (int) $a_log_level) {
123 return $this->default_log_level;
124 }
125
126 return $level;
127 }
128
129 public function setLogFormat($a_format)
130 {
131 $this->log_format = $a_format;
132 }
133
134 public function getLogFormat()
135 {
136 return $this->log_format;
137 }
138
139 public function setPath($a_str)
140 {
141 $this->path = $a_str;
142
143 // on filename change reload close current file
144 if ($this->fp) {
145 fclose($this->fp);
146 $this->fp = null;
147 }
148 }
149
150 public function setFilename($a_str)
151 {
152 $this->filename = $a_str;
153
154 // on filename change reload close current file
155 if ($this->fp) {
156 fclose($this->fp);
157 $this->fp = null;
158 }
159 }
160
161 public function setTag($a_str)
162 {
163 $this->tag = $a_str;
164 }
165
175 public function writeLanguageLog($a_topic, $a_lang_key)
176 {
177 //TODO: go through logfile and search for the topic
178 //only write the log if the error wasn't reported yet
179 $this->write("Language (" . $a_lang_key . "): topic -" . $a_topic . "- not present", $this->MESSAGE);
180 }
181
188 public function writeWarning($a_message)
189 {
190 $this->write("WARNING: " . $a_message);
191 }
192
201 public function logError($a_code, $a_msg)
202 {
203 switch ($a_code) {
204 case "3":
205 return; // don't log messages
206 $error_level = "message";
207 break;
208
209 case "2":
210 $error_level = "warning";
211 break;
212
213 case "1":
214 $error_level = "fatal";
215 break;
216
217 default:
218 $error_level = "unknown";
219 break;
220 }
221
222 $this->write("ERROR (" . $error_level . "): " . $a_msg);
223 }
224
239 public function write($a_msg, $a_log_level = null)
240 {
241 if ($this->enabled and $this->current_log_level >= $this->checkLogLevel($a_log_level)) {
242 $this->open();
243
244 if ($this->fp == false) {
245 //die("Logfile: cannot open file. Please give Logfile Writepermissions.");
246 }
247
248 if (fwrite($this->fp, $this->getLogFormat() . $a_msg . "\n") == -1) {
249 //die("Logfile: cannot write to file. Please give Logfile Writepermissions.");
250 }
251
252 // note: logStack() calls write() again, so do not make this call
253 // if no log level is given
254 if ($a_log_level == $this->FATAL) {
255 $this->logStack();
256 }
257 }
258 }
259
260 public function logStack($a_message = '')
261 {
262 try {
263 throw new Exception($a_message);
264 } catch (Exception $e) {
265 $this->write($e->getTraceAsString());
266 }
267 }
268
275 public function dump($a_var, $a_log_level = null)
276 {
277 $this->write(print_r($a_var, true), $a_log_level);
278 }
279
284 private function open()
285 {
286 if (!$this->fp) {
287 $this->fp = @fopen($this->path . "/" . $this->filename, "a");
288 }
289
290 if (!$this->fp && $this->enabled) {
291 include_once("./Services/Logging/exceptions/class.ilLogException.php");
292 throw new ilLogException('Unable to open log file for writing. Please check setup path to log file and possible write access.');
293 }
294 }
295
296 public function __destruct()
297 {
298 @fclose($this->fp);
299 }
300
301
302
306 public function delete()
307 {
308 if (@is_file($this->path . "/" . $this->filename)) {
309 @unlink($this->path . "/" . $this->filename);
310 }
311 }
312} // END class.ilLog
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
An exception for terminatinating execution or to throw for unit testing.
ILIAS Log exception class.
logging
Definition: class.ilLog.php:19
writeLanguageLog($a_topic, $a_lang_key)
special language checking routine
setFilename($a_str)
setLogFormat($a_format)
setLogLevel($a_log_level)
set global log level
Definition: class.ilLog.php:93
logError($a_code, $a_msg)
this function is automatically called by class.ilErrorHandler in case of an error To log manually ple...
write($a_msg, $a_log_level=null)
logging
writeWarning($a_message)
special warning message
open()
Open log file.
setPath($a_str)
setTag($a_str)
checkLogLevel($a_log_level)
determine log level
getLogFormat()
dump($a_var, $a_log_level=null)
Dump a variable to the log.
logStack($a_message='')
__construct($a_log_path, $a_log_file, $a_tag="", $a_enabled=true, $a_log_level=null)
constructor
Definition: class.ilLog.php:64
__destruct()