Log.inc
2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
require_once("$default->fileSystemRoot/lib/database/datetime.inc");
// define error levels
define("DEBUG", 0);
define("INFO", 1);
define("ERROR", 2);
/**
* $Id$
*
* File logging class
*
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* @version $Revision$
* @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
* @package lib
*/
class Log {
/**
* The minimum logging level- log everything with
* this error level and higher
*/
var $minimumLoggingLevel = INFO;
/**
* The directory to save logs to
*/
var $logDirectory;
/**
* The file to log the output to
*/
var $logFile;
/**
* Default constructor
*
* @param string the path to the logfile to write to
* @param int the desired level to log at
*/
function Log($logDirectory, $logLevel = INFO) {
$this->logDirectory = $logDirectory;
$this->minimumLoggingLevel = $logLevel;
$this->initialiseLogFile();
}
/**
* Creates the log file from the current datetime
*/
function initialiseLogFile() {
global $default;
if (!file_exists($this->logDirectory)) {
mkdir($this->logDirectory, 0755);
}
$this->logFile = $this->logDirectory . "/log-" . date("d-m-Y") . ".txt";
if (!file_exists($this->logFile)) {
touch($this->logFile);
}
}
/**
* Log a debug entry
*
* @param string the message to write to the log file
*/
function debug($logEntry) {
$this->writeLog($this->prefixEntry($logEntry, "DEBUG"), DEBUG);
}
/**
* Log an info entry
*
* @param string the message to write to the log file
*/
function info($logEntry) {
$this->writeLog($this->prefixEntry($logEntry, "INFO"), INFO);
}
/**
* Log an error entry
*
* @param string the message to write to the log file
*/
function error($logEntry) {
$this->writeLog($this->prefixEntry($logEntry, "ERROR"), ERROR);
}
/**
* Writes to the log file, checking that the log level is within
* the minimum logging level
*
* @param string the message to write to the log file
* @param int the error level to log at
*/
function writeLog($logEntry, $logLevel) {
if ($logLevel >= $this->minimumLoggingLevel) {
if ($fp = fopen($this->logFile, "a")) {
fwrite($fp, $logEntry);
}
fclose($fp);
}
}
/**
* Prefixes the log entry with the current date time, the logging level
* and the page that called it
*
* @param string the message to write to the log file
* @param int the error level to log at
*/
function prefixEntry($logEntry, $logLevel) {
return getCurrentDateTime() . " (" . getenv("REMOTE_ADDR") . ") $logLevel: $logEntry\n";
}
}
?>