Actualmente estoy un sistema web empleando CodeIgniter (CI), PostgreSQL, JQuery y Bootstrap. Como todo sistema es necesario llevar un registro de las operaciones realizadas por los usuarios.
Busque alguna librería de CI que permitiera llevar este registro, pero no conseguí.
Así que me pregunte ¿qué datos de la operación en curso necesito almacenar?:
¿Cuál? URL.
¿Cuándo? Timestamp.
¿Quién? Usuario.
¿Desde dónde? Dirección IP.
Esos serian los datos más básicos, también podríamos almacenar: Navegador, Versión de Navegador, Sistema Operativo, entre otros.
En mi caso, es extremadamente necesario guardar los datos manejados en la operación y el resultado de la misma (ACCESS, SUCCESS y FAILURE).
Nota: para este post se tomo en cuenta que los lectores ya tiene un conocimiento previo sobre CI.
Me decidí crear una librería el cual pudiera llamar desde cualquier parte del sistema y así almacenar esta info. Identifique que CI posee dos librerías de las cuales podemos sacar la mayoría de la información, las cuales son: Input Class y User Agent Class.
Librería audit para CI.
Librería de CI para registro de Auditoria/Logs
Modelo para librería audit
Clase que provee el acceso a datos de la librería de CI Audit
Para implementar la librería, cárgala en tu controlador y en cada método donde necesites registrar la auditoria pega esta línea
$this->audit->register();
Para registrar el ID del usuario, utiliza la siguiente linea:
$this->session->set_userdata('user_id', IDUSUARIO);
Si ya tienes registrado tu ID de usuario en session, pues cámbialo en la librería.
Si tu operación trabaja con datos recuerda llamar antes del método register() a:
$this->audit->setResult($result);
$this->audit->setData($data);
Con esas dos líneas registra los datos y el resultado de la operación.
En el caso del método setResult(), recibe un Boolean, para indicar si el almacenamiento fue exitoso o no.
En mi caso yo centralice la salida de CI con el callback de controlador _output($output), allí coloque mi método register() y solo me preocupo por llamar los métodos setResult() y setData() donde es estrictamente necesario.
Descarga todo el código mas ejemplo aquí
Instrucciones copia el contenido de la carpeta application en tu carpeta application de CI (Ojo verifica bien no vayas a sobre escribir tu trabajo). Ejecuta los script en tu BD y listo.
Nota: Esto no es un log de los errores cometidos dentro del sistema, sino el registro de las paginas y que datos utilizo el usuario dentro del sistema.
Entrada Original: José Rodríguez