Cómo hacer el registro de errores en CodeIgniter (PHP)


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

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 enviar ese error a una dirección de correo electrónico?
Author: Eric Leschinski, 2010-07-09

4 answers

CodeIgniter tiene algunas funciones de registro de errores integradas.

  • Haga que su carpeta /application/logs sea escribible
  • En /application/config/config.php conjunto
    $config['log_threshold'] = 1;
    o use un número más alto, dependiendo de 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 core CI_Exceptions log_exceptions(). Puedes hacerlo tú mismo o usar this. Más información sobre la ampliación del núcleo aquí

Véase http://www.codeigniter.com/user_guide/general/errors.html

 135
Author: Keyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-24 10:28:06

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

Primero, 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. Vea la directiva ErrorLog 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 elija ya debe existir y ser escribible por el proceso del servidor. La forma más sencilla de hacer que el archivo sea escribible es hacer que el servidor usuario el propietario del archivo. (El usuario del servidor puede ser nobody, _www, apache u otra cosa, dependiendo de la distribución de su sistema operativo.)

Para enviar el error por correo electrónico, debe 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);

Por favor vea la documentación PHP relevante para más información.

 18
Author: Mark Eirich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-09 05:22:55

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

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

 2
Author: Gpak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-30 13:43:14

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

Agha, aquí encontré un ejemplo que muestra un uso. Enviar mensajes de error por correo electrónico utilizando error_log()

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
 0
Author: Master James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:17