Hola a todos, hoy os dejo una clase que podemos utilizar para diferentes proyectos.
En una aplicación web, viene muy bien trazar los pasos que realiza la aplicación para casos de errores o de que no este haciendo algo bien.
Con esta clase lo podemos hacer de una forma cómoda, vamos a ir haciéndola poco a poco.
Lo primero es crear la clase y sus atributos, en este caso seria una referencia al objeto. Usamos la función fopen para abrir el fichero.
<?php class Log { private $fileLog; function __construct($path) { $this->fileLog = fopen($path, "a"); } } ?>
Es recomendable cerrar el fichero cada vez que se deje de utilizar, para ello creamos un metodo para ello.
function close() { fclose($this->fileLog); }
Y lo más importante es escribir el mensaje como tal lo haremos con un método mas. Añadimos el tipo, la fecha y el mensaje en sí.
function writeLine($type, $message) { $date = new DateTime(); fputs($this->fileLog, "[" . $type . "][" . $date->format('d-m-Y H:i:s') . "]: " . $message . "\n"); }
Os dejo por aquí el ejemplo completo:
<?php class Log { private $fileLog; function __construct($path) { $this->fileLog = fopen($path, "a"); } function writeLine($type, $message) { $date = new DateTime(); fputs($this->fileLog, "[" . $type . "][" . $date->format('d-m-Y H:i:s') . "]: " . $message . "\n"); } function close() { fclose($this->fileLog); } } ?>
Veamos un ejemplo:
<?php require_once 'Log.php'; define("ERROR_LOG", "E"); define("INFO_LOG", "I"); $log = new Log("log.txt"); $log->writeLine(ERROR_LOG, "Se ha producido un error"); $log->writeLine(INFO_LOG, "Mensaje de informacion"); $log->close(); ?>
Este es el contenido del log:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Muchas gracias, una pregunta, se puede configurar la ruta del log en algún parámetro? saludos.