log("Loggear esto como un debug", Logger::DEBUG); * * //Esto se guarda al log inmediatamente * $myLog->log("Loggear esto como un error", Logger::ERROR); * * //Inicia una transacción * $myLog->begin(); * * //Esto queda pendiente hasta que se llame a commit para guardar * //ó rollback para cancelar * $myLog->log("Esto es un log en la fila", Logger::WARNING) * $myLog->log("Esto es un otro log en la fila", Logger::WARNING)* * * //Se guarda al log * $myLog->commit(); * * //Cierra el Log * $myLog->close(); */ class Logger { private $fileLogger; private $transaction = false; private $quenue = array(); const DEBUG = 1; const ERROR = 2; const WARNING = 3; const CUSTOM = 4; /** * Constructor del Logger */ function Logger($name=''){ if($name===''||$name===true){ $name = 'log'.date('dmY').".txt"; } $this->fileLogger = @fopen('logs/'.$name, "a"); if(!$this->fileLogger){ error('KumbiaLogger: Cannot Open Log '.$name); return false; } } /** * Almacena un mensaje en el log * * @param string $msg */ function log($msg, $type=self::DEBUG){ if(!$this->fileLogger){ error('KumbiaLogger: Cannot handle log on an invalid logger'); } if(PHP_VERSION>=5.1) { $date = date(DATE_RFC1036); } else { $date = date("r"); } switch($type){ case self::DEBUG: $type = 'DEBUG'; break; case self::ERROR: $type = 'ERROR'; break; case self::WARNING: $type = 'WARNING'; break; case self::CUSTOM : $type = 'CUSTOM'; break; default: $type = 'CUSTOM'; } if($this->transaction){ $this->quenue[] = "[$date][$type] ".$msg."\n"; } else { fputs($this->fileLogger, "[$date][$type] ".$msg."\n"); } } /** * Inicia una transacción * */ function begin(){ $this->transaction = true; } /** * Deshace una transacción * */ function rollback(){ $this->transaction = false; $this->quenue = array(); } /** * Commit a una transacción */ function commit(){ $this->transaction = false; foreach($this->quenue as $msg){ $this->log($msg); } } /** * Cierra el Logger * */ function close(){ if(!$this->fileLogger){ error('KumbiaLogger: Cannot handle log on an invalid logger'); } return fclose($this->fileLogger); } } ?>