Overview

Namespaces

  • HZSystem
    • Core
      • HZMailer
      • Logger
        • Appenders
        • Exceptions
    • Exceptions
  • None

Classes

  • HZSystem\Core\HZConfig
  • HZSystem\Core\HZMailer\hzmailer
  • HZSystem\Core\Logger\Appenders\Appender
  • HZSystem\Core\Logger\Appenders\Appender_db
  • HZSystem\Core\Logger\Appenders\Appender_email
  • HZSystem\Core\Logger\Appenders\Appender_file
  • HZSystem\Core\Logger\Appenders\Appender_firephp
  • HZSystem\Core\Logger\Exceptions\AppenderNotFoundException
  • HZSystem\Core\Logger\Exceptions\LogFileNotFoundException
  • HZSystem\Core\Logger\HZLogger
  • HZSystem\Core\Logger\HZLogRow
  • HZSystem\Exceptions\HZException
  • HZSystem\Exceptions\HzNotApplicableMethodException

Interfaces

  • HZSystem\Exceptions\IException

Functions

  • __autoload
  • hzSystemAutoload
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  1: <?php
  2:  
  3:     namespace HZSystem\Core\Logger;
  4:     
  5:     use HZSystem\Core\Logger\Appenders;
  6:     use HZSystem\Core\Logger\Appenders\Appender_file;
  7:     use HZSystem\Core\Logger\Appenders\Appender_email;
  8:     use HZSystem\Core\Logger\Appenders\Appender_db;
  9:     use HZSystem\Core\Logger\Appenders\Appender_firephp;
 10:     
 11:     /*
 12:      * Copyright (C) 2015 Luca Liscio
 13:      *
 14:      * This program is free software: you can redistribute it and/or modify
 15:      * it under the terms of the GNU Affero General Public License as published by
 16:      * the Free Software Foundation, either version 3 of the License, or
 17:      * (at your option) any later version.
 18:      *
 19:      * This program is distributed in the hope that it will be useful,
 20:      * but WITHOUT ANY WARRANTY; without even the implied warranty of
 21:      * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 22:      * GNU Affero General Public License for more details.
 23:      *
 24:      * You should have received a copy of the GNU Affero General Public License
 25:      * along with this program.  If not, see <http://www.gnu.org/licenses/agpl-3.0.html>.
 26:      */
 27:     
 28:     /**
 29:      *  Logger di sistema 
 30:      *
 31:      *  @author  Luca Liscio <hzkight@h0model.org>
 32:      *  @version 1.0.0 2015/12/16 13:01:20
 33:      *  @copyright &copy;2015 Luca Liscio
 34:      *  @license http://www.gnu.org/licenses/agpl-3.0.html GNU/AGPL3
 35:      *
 36:      *  @package hzSystem
 37:      *  @subpackage Core\Logger
 38:      *  @filesource
 39:      */
 40:     
 41:     class HZLogger {
 42:         
 43:         // Errors level
 44:         /** Fatal error - higth level of error */
 45:         const LOG_FATAL =   404;
 46:         /** Normal error - medium level of error */
 47:         const LOG_ERROR =   403;
 48:         /** Warning - low level of error */
 49:         const LOG_WARNING = 402;
 50:         /** Info - info message */
 51:         const LOG_INFO =    401;
 52:         /** Debug - debug message */
 53:         const LOG_DEBUG =   400;
 54: 
 55:         // Appenders type
 56:         /** File type log */
 57:         const LOG_APPENDER_FILE =    501;
 58:         /** Email type log */
 59:     const LOG_APPENDER_EMAIL =   502;
 60:     /** Data base type log */
 61:     const LOG_APPENDER_DB =      503;
 62:     /** Firebug type log */
 63:     const LOG_APPENDER_FIREPHP = 504;
 64:         
 65:         //Dati del logger
 66:     private $logname;
 67:         private $date_format;
 68:         private $appenders = array();
 69:         private $loglevel;
 70:         
 71:         //Contiene le istanze del logger
 72:         private static $_instace = array();
 73:             
 74:         /**
 75:      * Crea una nuova istanza del logger
 76:          * @param string $logname nome della nuova istanza del logger da creare
 77:      * @param integer $type tipo di logger da creare 
 78:          * @param integer $loglevel livello di errore da cui cominciare a registrare il log
 79:      * @return \HZSystem\Core\Logger\HZLogger
 80:      * @example $miolog = HZLogger::gelLogger("miolog",HZLogger::LOG_APPENDER_FILE,HZLogger::LOG_INFO);
 81:      */
 82:     public static function getLogger($logname,$type=self::LOG_APPENDER_FILE, $loglevel=self::LOG_INFO){
 83:             
 84:         if (!(self::$_instace[$logname] instanceof self)){
 85:             self::$_instace[$logname] = new self($logname,$type,$loglevel);
 86:         }
 87:         
 88:         return self::$_instace[$logname];
 89:     }
 90:         
 91:     /**
 92:      * Restituisce un array con tutte le istanze del logger
 93:      * @return HZSystem\Core\Logger\HZLogger
 94:      */
 95:     public static function getIstances(){
 96:             
 97:             return self::$_instace;
 98:                 
 99:         }
100:         
101:     /**
102:          * Metodo costruttore
103:      * @param string $logname nome del logger
104:      * @param integer $type tipo di logger da creare
105:          * @param integer $loglevel livello di errore da cui cominciare a registrare il log
106:      */ 
107:     private function __construct($logname,$type,$loglevel){
108:        
109:             $this->logname = $logname;
110:             $this->loglevel = $loglevel;
111:             $this->add_appender($type);
112:             $this->get_appender($type)->setLogLevel($this->loglevel);
113:             $this->date_format = "d-m-Y H:i:s";
114:           
115:     }
116:             
117:         /**
118:      * Aggiunge un nuovo appender al logger
119:      * @param integer $type tipo di appender da aggiungere
120:      */
121:     public function add_appender($type){
122:             
123:         switch ($type){
124:                 case self::LOG_APPENDER_FILE:
125:                     $this->appenders[$type] = new Appender_file($this->logname);
126:                     break;
127:                 case self::LOG_APPENDER_EMAIL:
128:                     $this->appenders[$type] = new Appender_email($this->logname);
129:                     break;
130:                 case self::LOG_APPENDER_DB:
131:                     $this->appenders[$type] = new Appender_db($this->logname);
132:                     break;
133:                 case self::LOG_APPENDER_FIREPHP:
134:                     $this->appenders[$type] = new Appender_firephp($this->logname);
135:                     break;                  
136:         }
137:                 
138:             $this->get_appender($type)->setLogLevel($this->loglevel);
139:             
140:     }
141:         
142:     /**
143:      * Rimuove un appender dal logger
144:      * @param integer $type tipo di appender da rimuovere
145:      * @throws AppenderNotFoundException
146:      */
147:     public function remove_appender($type){
148:             
149:         if(isset($this->appenders[$type])){
150:             unset($this->appenders[$type]); 
151:         } else {
152:             throw new AppenderNotFoundException(dgettext("hzSystem","Appender requested not found"));
153:         }
154:         
155:     }
156:         
157:     /**
158:      * restituisce l'appender associato al tipo specifiato
159:      * @param integer $type tipo di appender che si vuole ottenere
160:      * @throws AppenderNotFoundException
161:      * @return HZSystem\Core\Logger\Appenders\Appender
162:      */
163:     public function get_appender($type){
164:             
165:         if(isset($this->appenders[$type])){
166:             return $this->appenders[$type];
167:         } else {
168:             throw new AppenderNotFoundException(dgettext("hzSystem","Appender requested not found"));
169:         }
170:             
171:     }
172:         
173:         /**
174:          * Restituisce la lista degli appenders attivi sotto forma di array 
175:          * bidimensionale [codice][tipo]
176:          * @return string
177:          */
178:         public function get_appenders_list(){
179:             
180:             $list = array();
181:             
182:             $keys = array_keys($this->appenders); 
183:             
184:             foreach($keys as $key){
185:                 
186:                 switch ($key){
187:                     case self::LOG_APPENDER_FILE:
188:                         $list[][0] = self::LOG_APPENDER_FILE;
189:                         $list[][1] = "FILE";
190:                         break;
191:                     case self::LOG_APPENDER_EMAIL:
192:                         $list[][0] = self::LOG_APPENDER_EMAIL;
193:                         $list[][1] = "EMAIL";
194:                         break;
195:                     case self::LOG_APPENDER_DB:
196:                         $list[][0] = self::LOG_APPENDER_DB;
197:                         $list[][1] = "DB";
198:                         break;
199:                     case self::LOG_APPENDER_FIREPHP:
200:                         $list[][0] = self::LOG_APPENDER_FIREPHP;
201:                         $list[][1] = "FIREPHP";
202:                         break;                  
203:                 }
204:                 
205:             }
206:             
207:             return $list;
208:             
209:         }
210:        
211:         /**
212:          * setta il formato data del log usa la stessa sintassi del comando date di php
213:          * @param string $date_format
214:          */
215:     public function setDateFormat($date_format){
216:     
217:        $this->date_format = $date_format;
218:           
219:     }
220:             
221:         /**
222:          * Aggiunge una riga la log
223:          * @param integer $level livello dell'errore
224:          * @param string $msg messaggio di errore
225:          */
226:         public function append($level, $msg){
227:                 
228:             $logrow = new HZLogRow();
229:             $logrow->date = date($this->date_format);
230:             $logrow->message = $msg;
231:             $logrow->type = $level;
232:                 
233:             $keys = array_keys($this->appenders);
234:                 
235:             foreach($keys as $key){
236:                 $this->appenders[$key]->add($logrow);
237:             }
238:                             
239:         }
240:    
241:         /**
242:          * Aggiunge una riga la log di tipo fatal
243:          * @param string $msg messaggio di errore
244:          */
245:         public function fatal($msg){
246:             $this->append(self::LOG_FATAL, $msg);
247:         }
248:           
249:         /**
250:          * Aggiunge una riga la log di tipo error
251:          * @param string $msg messaggio di errore
252:          */
253:         public function error($msg){
254:             $this->append(self::LOG_ERROR, $msg);
255:         }
256:             
257:         /**
258:          * Aggiunge una riga la log di tipo warning
259:          * @param string $msg messaggio di errore
260:          */
261:         public function warning($msg){
262:             $this->append(self::LOG_WARNING, $msg);
263:         }
264:             
265:         /**
266:          * Aggiunge una riga la log di tipo info
267:          * @param string $msg messaggio di errore
268:          */
269:         public function info($msg){
270:             $this->append(self::LOG_INFO, $msg);
271:         }
272:             
273:         /**
274:          * Aggiunge una riga la log di tipo debug
275:          * @param string $msg messaggio di errore
276:          */
277:         public function debug($msg){
278:             $this->append(self::LOG_DEBUG, $msg);
279:         }
280:     
281:     }
282: ?> 
hzsystem API documentation generated by ApiGen