1: <?php
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: class Logger {
48: 49: 50: 51: 52: 53:
54: private $logfile;
55:
56: 57: 58: 59: 60: 61:
62: private $level;
63:
64: 65: 66: 67: 68: 69:
70: private $classname;
71:
72: 73: 74: 75: 76: 77:
78: private $debugClasses = array();
79:
80: 81: 82: 83: 84: 85:
86: public function __construct($classname) {
87: global $config;
88:
89: $this->classname = $classname;
90: $this->level = $config->get('app.log.trace.level');
91: $this->debugClasses = explode(',', $config->get('app.log.trace.debug.classes'));
92: $this->logfile = new LogFile($config->get('app.file.store.dir').'logs/'.$config->get('app.log.file'));
93: $this->logfile->setMaxSize($config->get('app.log.file.max.size'));
94: }
95:
96: 97: 98: 99: 100: 101:
102: public function debug($message) {
103: if($this->level == 'DEBUG' || in_array($this->classname, $this->debugClasses)) {
104: $dateTime = date("Y-m-d H:i:s");
105: $this->logfile->writeLine(array($dateTime, 'DEBUG', $this->classname, $message,
106: (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
107: }
108: }
109:
110: 111: 112: 113: 114: 115:
116: public function info($message) {
117: if($this->level == 'DEBUG' || $this->level == 'INFO' || in_array($this->classname, $this->debugClasses)) {
118: $dateTime = date("Y-m-d H:i:s");
119: $this->logfile->writeLine(array($dateTime, 'INFO', $this->classname, $message,
120: (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
121: }
122: }
123:
124: 125: 126: 127: 128: 129:
130: public function warn($message) {
131: if($this->level == 'DEBUG' || $this->level == 'INFO' || $this->level == 'WARN' || in_array($this->classname, $this->debugClasses)) {
132: $dateTime = date("Y-m-d H:i:s");
133: $this->logfile->writeLine(array($dateTime, 'WARN', $this->classname, $message,
134: (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
135: }
136: }
137:
138: 139: 140: 141: 142: 143:
144: public function error($message) {
145: if($this->level == 'DEBUG' || $this->level == 'INFO' || $this->level == 'WARN' || $this->level == 'ERROR' ||
146: in_array($this->classname, $this->debugClasses)) {
147: $dateTime = date("Y-m-d H:i:s");
148: $this->logfile->writeLine(array($dateTime, 'ERROR', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
149: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
150: }
151: }
152:
153: 154: 155: 156: 157: 158:
159: public function fatal($message) {
160: if($this->level == 'DEBUG' || $this->level == 'INFO' || $this->level == 'WARN' || $this->level == 'ERROR' ||
161: $this->level == 'FATAL' || in_array($this->classname, $this->debugClasses)) {
162: $dateTime = date("Y-m-d H:i:s");
163: $this->logfile->writeLine(array($dateTime, 'FATAL', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
164: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
165: }
166: }
167:
168: 169: 170: 171: 172: 173:
174: public function sql($message) {
175: if($this->level == 'SQL') {
176: $dateTime = date("Y-m-d H:i:s");
177: $this->logfile->writeLine(array($dateTime, 'SQL', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
178: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
179: }
180: }
181:
182: 183: 184: 185: 186: 187:
188: public function notifyAdmin($message) {
189: global $config;
190:
191:
192: if($config->get('app.log.error.mail.address') != '') {
193: $body = "The following error has occured:\n\n";
194:
195: $body .= "Class:-> ".$this->classname."\n\n";
196: $body .= "Message:-> ".$message."\n\n";
197:
198: $body .= "\n\nKind regards,\n\nAdministrator\n--\n".$config->get('app.url');
199:
200: mail($config->get('app.log.error.mail.address'), "Error in class ".$this->classname." on site .".$config->get('app.title'), $body,
201: "From: ".$config->get('email.reply.to')."\r\nReply-To: ".$config->get('email.reply.to')."\r\nX-Mailer: PHP/" . phpversion());
202: }
203: }
204:
205: 206: 207: 208: 209: 210:
211: public function setLogFile($filepath) {
212: global $config;
213:
214: $this->logfile = new LogFile($filepath);
215: $this->logfile->setMaxSize($config->get('app.log.file.max.size'));
216: }
217: }
218:
219: ?>