GUARDAR LOGS EN PHP: MÉTODOS Y BUENAS PRÁCTICAS

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.