it-swarm.com.ru

Как сделать регистрацию ошибок в CodeIgniter (PHP)

Я хочу регистрировать ошибки в PHP CodeIgniter. Как включить ведение журнала ошибок? 

У меня есть несколько вопросов:

  1. Каковы все шаги, чтобы зарегистрировать ошибку?
  2. Как создается файл журнала ошибок?
  3. Как вставить сообщение об ошибке в файл журнала (при возникновении ошибки)?
  4. Как отправить эту ошибку по электронной почте на адрес электронной почты?
72
udaya

CodeIgniter имеет некоторые встроенные функции регистрации ошибок.

  • Сделайте вашу папку / application/logs доступной для записи 
  • В /application/config/config.php установите 
    $config['log_threshold'] = 1;
    или используйте большее число, в зависимости от того, сколько деталей вы хотите в своих журналах
  • Используйте log_message('error', 'Some variable did not contain a value.');
  • Чтобы отправить электронное письмо, вам необходимо расширить базовый метод класса CI_Exceptions log_exceptions(). Вы можете сделать это самостоятельно или использовать это . Подробнее о расширении ядра здесь

См. http://www.codeigniter.com/user_guide/general/errors.html

151
Keyo

Чтобы просто поместить строку в журнал ошибок сервера, используйте функцию PHP error_log (). Тем не менее, этот метод не будет отправлять электронную почту.

Во-первых, чтобы вызвать ошибку:

trigger_error("Error message here", E_USER_ERROR);

По умолчанию это будет занесено в файл журнала ошибок сервера. Смотрите директиву ErrorLog для Apache. Чтобы установить свой собственный файл журнала:

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

Обратите внимание, что выбранный вами файл журнала уже должен существовать и быть доступным для записи для процесса сервера. Самый простой способ сделать файл доступным для записи - это сделать пользователя сервера владельцем файла. (Пользователем сервера может быть никто, _www, Apache или что-то еще, в зависимости от дистрибутива вашей ОС.)

Чтобы отправить сообщение об ошибке по электронной почте, вам нужно настроить собственный обработчик ошибок:

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);

Пожалуйста, смотрите соответствующую PHP документацию для получения дополнительной информации.

21
Mark Eirich

Также убедитесь, что вы позволили codeigniter регистрировать тип сообщений, которые вы хотите в файле конфигурации.

т.е. $config['log_threshold'] = [log_level ranges 0-4];

2
Gpak

Еще несколько вопросов по части 4. Как вы отправляете сообщение об ошибке по электронной почте на адрес электронной почты? Функция error_log также имеет адрес электронной почты . http://php.net/manual/en/function. error-log.php

Ага, здесь я нашел пример, который показывает использование . Отправить сообщение об ошибке по электронной почте, используя 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
Master James