Blog de Gonzalo

GUARDAR LOG EN PHP

Cuando en php se produce un error se escribe en el fichero especificado en el fichero de php.ini en en valor error_log, que se puede consultar con la función phpinfo, o también el fichero de errores de apache. Pero si queremos escribir nuestro propio fichero de logs para saber que valores tienen ciertas variables, objetos o arrays, o guardar queries y sus resultados se puede usar la funcón error_log. Con el siguiente ejemplo se puede ver más claro:


    //ejemplo de función que guarda en el fichero de log una variable
      function log_message_text(String, $userName,String $str_Message){
          $logmessage =  '[' . date('Y-m-d h:i:s') .' '.$userName.'] '. $str_Message . "\n";
          error_log($logmessage, 3,  'ruta_log_file/mi_log_file.log');      
      }
    //ejemplo de función que guarda en el fichero de log un array formateado para que sea más legible
      function log_message_array(String $userName,Array $arr_Message){
          $logmessage =  '[' . date('Y-m-d h:i:s') .' '.$userName.'] '. print_r($arr_Message,true) . "\n";
         error_log($logmessage, 3,  'ruta_log_file/mi_log_file.log');
      }

Como se peude ver en el ejemplo anterior se usa la función error_log($logmessage,3,'ruta_log_file/mi_log_file.log'); donde lo más importante son el segundo parámetro que vale 3 que indica que se especifica un fichero de log, que e sel tercer parámetro. Hay otras opciones pero en este caso indica el valor 3 ya que nos permite gestionar nuestros logs sin interferir en los propios de apache o php.
Tambíen se puede hacer que ante cierta circunstancia se envíe un email:

    //ejemplo de función que guarda en el fichero de log una variable
      $logmessage =  '[' . date('Y-m-d h:i:s') .' '.$userName.'] '. print_r($errorMessage,true) . "\n";
      error_log($logmessage,  1, 'email_destinatario','Subject:'.self::EMAIL_SENDER);
      }

En este caso el segundo parámetro de error_log vale 1 que indica que se envía un email al email especificado en el tercer parámetro, el cuarto parámetro es opcional y son las cabeceras del email.
Espero que os sea de utilidad.

Compartir en twitter