Logs manuales y personalizados en Symfony

julio 7, 2010

Suele ser una buena práctica tener un archivo de logs con las últimas acciones más importantes que se han hecho en nuestro sitio web: nuevo usuario registrado, se ha escrito un nuevo comentario, se ha editado o borrado un artículo, etc.

Symfony tiene un sistema de logs bastante decente, que nos informa de todo lo que ocurre cada vez que cargamos una nueva página. Vamos a hacer algo sencillo: vamos a escribir nuestros propios mensajes de log personalizados y los escribiremos manualmente en el momento que consideremos oportuno y deseamos tener un control. Además, escribiremos estos logs en un archivo aparte del que utiliza Symfony por defecto. Así podremos leer directamente ese archivo sin tener otros logs mezclados con los que realmente nos interesa.

Primero, vamos a crear un nuevo archivo llamado CustomLog.class.php en la carpeta /lib/:

1
2
3
4
5
6
7
8
9
10
11
<?php
 
class CustomLog{
  static public function newLog($message) {
 
        $logFile = sfConfig::get('sf_log_dir').'/custom_logs.log';
        $custom_log = new sfFileLogger(new sfEventDispatcher(), array('file' => $logFile));
        $custom_log->info($message);
 
  }  
}

El archivo donde guardaremos nuestros logs personalizados, lo encontraremos en “/log/custom_logs.log”.

Para escribir un nuevo log desde cualquier parte del código, simplemente deberemos hacer:

1
CustomLog::newLog("Escribimos un nuevo log");

Si abrimos nuestro archivo de logs personalizados, encontraremos algo como esto:

1
Jul 05 22:31:41 symfony [info] Escribimos un nuevo log

Así podremos llevar un control de lo que ocurre en nuestra web.

Quizás haya una forma mejor de hacerlo. Si es así, no dudes en dejar tu propuesta en los comentarios. A lo mejor también sería conveniente escribir esas 3 lineas dentro de un try.. catch, por lo que pudiera pasar.

CompartirTweet about this on TwitterShare on TumblrShare on FacebookShare on LinkedInShare on Google+Email this to someone

Tags ; ,

2 comentarios

    Luis Sep 29, 2011

    Hola muchas gracias, me sirvio mucho esto, y como puedo hacer para que el log, se guarde en una BD, como por ejemplo, cuando un usuario se autentica, quiero guardar que ese usuario se autentico tal día

    Responder
    serguey May 18, 2012

    Hola probe lo de los log y si me funciono bien pero yo al igual que luis deceo saber como pudiera guardar esto en una basa de datos y ademas en el log a parte del mensaje desearia agragarle el usuario que hiso la modificacion.
    De ante manos Gracias para todos.

    Responder

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.