Blog de Gonzalo

Blog de programación de Gonzalo López

GUARDAR LOG EN PHP

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