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: $line = array($dateTime, 'ERROR', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
149: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''));
150: $this->logfile->writeLine($line);
151:
152: $this->notifyAdmin(print_r($line, true));
153: }
154: }
155:
156: 157: 158: 159: 160: 161:
162: public function fatal($message) {
163: if($this->level == 'DEBUG' || $this->level == 'INFO' || $this->level == 'WARN' || $this->level == 'ERROR' ||
164: $this->level == 'FATAL' || in_array($this->classname, $this->debugClasses)) {
165: $dateTime = date("Y-m-d H:i:s");
166: $line = array($dateTime, 'FATAL', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
167: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''));
168: $this->logfile->writeLine($line);
169:
170: $this->notifyAdmin(print_r($line, true));
171: }
172: }
173:
174: 175: 176: 177: 178: 179:
180: public function sql($message) {
181: if($this->level == 'SQL') {
182: $dateTime = date("Y-m-d H:i:s");
183: $this->logfile->writeLine(array($dateTime, 'SQL', $this->classname, $message, (isset($_SERVER['HTTP_USER_AGENT']) ?
184: $_SERVER['HTTP_USER_AGENT'] : ''), (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '')));
185: }
186: }
187:
188: 189: 190: 191: 192: 193:
194: public function action($message) {
195:
196: if(isset($_SESSION['currentUser'])) {
197: $action = new ActionLogObject();
198: $action->set('client', (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
199: $action->set('IP', (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''));
200: $action->set('message', $message);
201: $action->save();
202: }
203: }
204:
205: 206: 207: 208: 209: 210:
211: public function notifyAdmin($message) {
212: global $config;
213:
214:
215: if($config->get('app.log.error.mail.address') != '') {
216: $body = "The following error has occured:\n\n";
217:
218: $body .= "Class:-> ".$this->classname."\n\n";
219: $body .= "Message:-> ".$message."\n\n";
220:
221: $body .= "\n\nKind regards,\n\nAdministrator\n--\n".$config->get('app.url');
222:
223: mail($config->get('app.log.error.mail.address'), "Error in class ".$this->classname." on site ".$config->get('app.title'), $body,
224: "From: ".$config->get('email.reply.to')."\r\nReply-To: ".$config->get('email.reply.to')."\r\nX-Mailer: PHP/" . phpversion());
225: }
226: }
227:
228: 229: 230: 231: 232: 233:
234: public function setLogFile($filepath) {
235: global $config;
236:
237: $this->logfile = new LogFile($filepath);
238: $this->logfile->setMaxSize($config->get('app.log.file.max.size'));
239: }
240: }
241:
242: ?>