Как сделать регистрацию ошибок в CodeIgniter (PHP) - PullRequest
78 голосов
/ 09 июля 2010

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

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

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

Ответы [ 4 ]

160 голосов
/ 09 июля 2010

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

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

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

23 голосов
/ 09 июля 2010

Чтобы просто поместить строку в журнал ошибок сервера, используйте функцию 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('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

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

2 голосов
/ 30 января 2016

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

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

0 голосов
/ 22 января 2017

Больше вопросов относительно части 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);
...