2010-07-09 60 views
60

Quiero registro de errores en PHP CodeIgniter. ¿Cómo habilito el registro de errores?Cómo hacer el registro de errores en CodeIgniter (PHP)

Tengo algunas preguntas:

  1. ¿Cuáles son todos los pasos para registrar un error?
  2. ¿Cómo se crea un archivo de registro de errores?
  3. Cómo insertar el mensaje de error en el archivo de registro (cada vez que se produce un error)?
  4. ¿Cómo se envía ese error por correo electrónico a una dirección de correo electrónico?

Respuesta

117

CodeIgniter tiene algunas funciones de registro de errores integradas en.

  • Haga sus /aplicación/logs carpeta escribible
  • En /application/config/config.php conjunto
    $config['log_threshold'] = 1;
    o utilizar una número más alto, según la cantidad de detalles que desee en sus registros
  • Use log_message('error', 'Some variable did not contain a value.');
  • Para enviar un correo electrónico necesita extender el método de clase principal CI_Exceptions log_exceptions(). Puede hacerlo usted mismo o usar this. Más información sobre la ampliación del núcleo here

Ver http://www.codeigniter.com/user_guide/general/errors.html

+2

Ahora el enlace es [http://ellislab.com/codeigniter/user-guide/general/errors.html](http://ellislab.com/codeigniter/user-guide/general/errors.html) – machineaddict

+0

¿Hay cualquier implicancia de seguridad para esto? –

+0

Esto descarga datos a un archivo php cuyo nombre de archivo está en el formato: log- [Y-m-d H: i: s] o el valor que se establezca en la configuración de la clave log_date_format definida en su archivo de configuración. Mientras no logre registrar/volcar datos confidenciales, debería ser bastante seguro. Este archivo es relativo a una página index.html de forma predeterminada, por lo que obviamente los archivos php generados no serían de acceso público, pero nunca se sabrá. Asegúrese de tener todas estas precauciones en su lugar si cambia el directorio predeterminado de la aplicación/registros. –

17

Para simplemente poner una línea en el registro de errores del servidor, utilice la función error_log() de PHP. Sin embargo, ese método no enviará un correo electrónico.

En primer lugar, para desencadenar un error:

trigger_error("Error message here", E_USER_ERROR); 

Por defecto, esto irá en el archivo de registro de errores del servidor. Ver el ErrorLog directive para Apache. Para establecer su propio archivo de registro:

ini_set('error_log', 'path/to/log/file'); 

Tenga en cuenta que el archivo de registro que ha seleccionado ya debe existir y ser escribible por el proceso del servidor. La forma más sencilla de hacer que el archivo sea editable es hacer que el usuario del servidor sea el propietario del archivo. (. El usuario del servidor puede ser nadie, _www, Apache, o algo más, dependiendo de la distribución OS)

Para enviar por correo electrónico el error, es necesario configurar un controlador de errores personalizado:

function mail_error($errno, $errstr, $errfile, $errline) { 
    $message = "[Error $errno] $errstr - Error on line $errline in file $errfile"; 
    error_log($message); // writes the error to the log file 
    mail('[email protected]', 'I have an error', $message); 
} 
set_error_handler('mail_error', E_ALL^E_NOTICE); 

Consulte el relevant PHP documentation para obtener más información.

+0

un valor incalculable. Gracias por compartir. – kta

2

También asegúrese de que usted ha permitido que CodeIgniter para registrar el tipo de mensajes que desea en un archivo de configuración.

es decir $config['log_threshold'] = [log_level ranges 0-4];

0

Más lo que respecta a la pregunta oin parte 4 ¿Cómo se puede enviar por correo electrónico que el error a una dirección de correo electrónico? La función error_log también tiene un destino de correo electrónico. http://php.net/manual/en/function.error-log.php

Agha, aquí encontré un ejemplo que muestra un uso. Send errors message via email using error_log()

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL); 
Cuestiones relacionadas