00001 <?php
00055 abstract class Logger {
00056
00062 private static $fileLogger;
00066 private static $log_name = null;
00067
00073 private static $transaction = false;
00074
00080 private static $quenue = array();
00081
00087 private static $log_path = '';
00088
00092 public static function initialize($name='')
00093 {
00094 self::$log_path = APP_PATH . 'temp/logs/';
00095 if($name===''||$name===true){
00096 $name = 'log'.date('dmY').'.txt';
00097 }
00098 self::$fileLogger = fopen(self::$log_path.$name, 'a');
00099 if(!self::$fileLogger){
00100 throw new KumbiaException("No se puede abrir el log llamado: ".$name);
00101 return false;
00102 }
00103 }
00109 public static function set_path($path)
00110 {
00111 self::$log_path = $path;
00112 }
00113
00119 public static function get_path()
00120 {
00121 return self::$log_path;
00122 }
00123
00124
00132 public static function log($type='DEBUG', $msg, $name_log)
00133 {
00134 self::initialize($name_log);
00135 if(!self::$fileLogger){
00136 throw new KumbiaException('No se puede enviar mensaje al log porque es invalido');
00137 }
00138 if(is_array($msg)){
00139 $msg = print_r($msg, true);
00140 }
00141 $date = date(DATE_RFC1036);
00142 if(self::$transaction){
00143 self::$quenue[] = "[$date][$type] ".$msg."\n";
00144 } else {
00145 fputs(self::$fileLogger, "[$date][$type] ".$msg."\n");
00146 }
00147 self::close();
00148 }
00149
00154 public static function begin()
00155 {
00156 self::$transaction = true;
00157 }
00158
00163 public static function rollback()
00164 {
00165 self::$transaction = false;
00166 self::$quenue = array();
00167 }
00168
00172 public static function commit()
00173 {
00174 self::$transaction = false;
00175 foreach(self::$quenue as $msg){
00176 self::log($msg);
00177 }
00178 }
00179
00184 public static function close()
00185 {
00186 if(!self::$fileLogger){
00187 throw new KumbiaException("No se puede cerrar el log porque es invalido");
00188 }
00189 return fclose(self::$fileLogger);
00190 }
00198 public static function warning ($msg, $name_log='')
00199 {
00200 self::log('WARNING', $msg, $name_log);
00201 }
00202
00210 public static function error ($msg, $name_log='')
00211 {
00212 self::log('ERROR', $msg, $name_log);
00213 }
00221 public static function debug ($msg, $name_log='')
00222 {
00223 self::log('DEBUG', $msg, $name_log);
00224 }
00232 public static function alert ($msg, $name_log='')
00233 {
00234 self::log('ALERT', $msg, $name_log);
00235 }
00243 public static function critical ($msg, $name_log='')
00244 {
00245 self::log('CRITICAL', $msg, $name_log);
00246 }
00254 public static function notice ($msg, $name_log='')
00255 {
00256 self::log('NOTICE', $msg, $name_log);
00257 }
00265 public static function info ($msg, $name_log='')
00266 {
00267 self::log('INFO', $msg, $name_log);
00268 }
00276 public static function emergence ($msg, $name_log='')
00277 {
00278 self::log('EMERGENCE', $msg, $name_log);
00279 }
00287 public static function custom ($type='CUSTOM', $msg, $name_log='')
00288 {
00289 self::log($type, $msg, $name_log);
00290 }
00291 }