he aprovechado que tengo un pequeño respiro en el trabajo para escribir por aquí, ya que hace tiempo que no me paso.
He hecho una pequeña clase para crear logs. Es sencillita de entender, pero aquí va un pequeño repaso al código:
Primero, las variables gloables que se usarán:
Código PHP:
public $logdir='/temp/';
Código PHP:
public $logname=false;
Código PHP:
public $prefix=true;
Código PHP:
public $separator="\n";
Código PHP:
private $_filehandler=false;
Ahora vamos con las funciones
Código PHP:
public function log($str){
if(!$this->logname) $this->logname=date("d-m-o").".txt";
if(!$this->_filehandler) $this->_createfile(); //create log´s file if not exists
$this->_writeintofile($str); //write into the file
}
Código PHP:
private function _createfile(){
$file=$this->logdir.$this->logname;
$this->_filehandler=fopen($file,'a');
if(!$this->_filehandler) die("Error: no se pudo generar el fichero");
return;
}
Código PHP:
private function _getprefix(){
$prefix='';
$prefix.="[".date("d-m-o H:i:s")."]";
return $prefix;
}
Código PHP:
private function _writeintofile($str){
if($this->prefix) $str=$this->_getprefix()." ".$str;
fwrite($this->_filehandler,$str.$this->separator);
}
Código PHP:
function __destruct(){
if(!$this->_filehandler) return;
fclose($this->_filehandler); //close the file handler
}
Su uso es muy sencillo:
Código PHP:
<?php
include_once('log.php');
$p=new logcreator();
$p->logdir='/tmp/';
$p->logname='log.txt';
$p->log("Hola, soy un log que me guardo en /tmp/log.txt");
$p->prefix=false;
$p->log("Hola, ahora soy un log sin prefijo");
?php>
Quizá esto sea más útil para PHP-Cli que orientado a web.
Espero que a alguno os pueda resultar útil. Espero mejorarlo con el tiempo.
Código completo:
Código PHP:
Class logcreator{
public $logdir='/temp/';
public $logname=false;
public $prefix=true;
public $separator="\n";
private $_filehandler=false;
public function log($str){
if(!$this->logname) $this->logname=date("d-m-o").".txt";
if(!$this->_filehandler) $this->_createfile(); //create log´s file if not exists
$this->_writeintofile($str); //write into the file
}
private function _createfile(){
$file=$this->logdir.$this->logname;
$this->_filehandler=fopen($file,'a');
if(!$this->_filehandler) die("Error: no se pudo generar el fichero");
return;
}
private function _getprefix(){
$prefix='';
$prefix.="[".date("d-m-o H:i:s")."]";
return $prefix;
}
private function _writeintofile($str){
if($this->prefix) $str=$this->_getprefix()." ".$str;
fwrite($this->_filehandler,$str.$this->separator);
}
function __destruct(){
if(!$this->_filehandler) return;
fclose($this->_filehandler); //close the file handler
}
}
Saludos!!