Как сделать регистрацию ошибок в CodeIgniter (PHP)
Я хочу, чтобы ошибка регистрировалась в PHP CodeIgniter. Как включить ведение журнала ошибок?
У меня есть несколько вопросов:
- каковы все шаги для регистрации ошибки?
- как создается файл журнала ошибок?
- как вставить сообщение об ошибке в файл журнала (при возникновении ошибки)?
- как вы отправляете эту ошибку по электронной почте на адрес электронной почты?
4 ответа:
CodeIgniter имеет некоторые встроенные функции регистрации ошибок.
- сделать свой / application / logs папка для записи
- на / application / config / config.php set
$config['log_threshold'] = 1;
или используйте большее число, в зависимости от того, сколько деталей вы хотите в своих журналах- использовать
log_message('error', 'Some variable did not contain a value.');
- чтобы отправить электронное письмо, вам нужно расширить метод класса core CI_Exceptions
log_exceptions()
. Вы можете сделать это самостоятельно или использовать этой. Дополнительная информация о расширении ядра здесьсм.http://www.codeigniter.com/user_guide/general/errors.html
чтобы просто поместить строку в журнал ошибок сервера, используйте функцию PHP error_log (). Однако этот метод не будет отправлять электронную почту.
во-первых, чтобы вызвать сообщение об ошибке:
trigger_error("Error message here", E_USER_ERROR);
по умолчанию, это будет идти в файл журнала ошибок сервера. Смотрите директива журнал для Apache. Чтобы установить свой собственный файл журнала:
ini_set('error_log', 'path/to/log/file');
обратите внимание, что выбранный файл журнала должен уже существовать и быть доступен для записи серверным процессом. Самый простой способ сделать файл возможность записи-это сделать пользователя сервера владельцем файла. (Пользователь сервера может быть nobody, _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('you@yourdomain.com', 'I have an error', $message); } set_error_handler('mail_error', E_ALL^E_NOTICE);
смотрите соответствующая документация PHP для получения дополнительной информации.
также убедитесь, что вы разрешили codeigniter регистрировать тип сообщений, которые вы хотите в файле конфигурации.
Я.е
$config['log_threshold'] = [log_level ranges 0-4];
больше OIN касается вопроса часть 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);