Мне нужен журнал ошибок в PHP CodeIgniter. Как включить ведение журнала ошибок?
У меня есть несколько вопросов:
- Каковы все шаги для регистрации ошибки?
- Как создается файл журнала ошибок?
- Как поместить сообщение об ошибке в файл журнала (при возникновении ошибки)?
- Как отправить эту ошибку по электронной почте?
Чтобы просто поместить строку в журнал ошибок сервера, используйте функцию 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 .
источник
Также убедитесь, что вы разрешили codeigniter регистрировать сообщения нужного вам типа в файле конфигурации.
т.е.
$config['log_threshold'] = [log_level ranges 0-4];
источник
Подробнее о части вопроса 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);
источник
In config.php add or edit the following lines to this: ------------------------------------------------------ $config['log_threshold'] = 4; // (1/2/3) $config['log_path'] = '/home/path/to/application/logs/'; Run this command in the terminal: ---------------------------------- sudo chmod -R 777 /home/path/to/application/logs/
источник