Clase Log en PHP

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.

Compartir

1 comentario

  1. Miriam

    Muchas gracias, una pregunta, se puede configurar la ruta del log en algún parámetro? saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *