В CodeIgniter, как я могу получать сообщения об ошибках PHP по электронной почте?

StackOverflow https://stackoverflow.com/questions/260597

Вопрос

Я хотел бы получать журналы ошибок по электронной почте. Например, если должно появиться сообщение об ошибке Warning-level , я хотел бы получить электронное письмо об этом.

Как я могу заставить это работать в CodeIgniter?

Это было полезно?

Решение

Вы можете расширить базовый класс Exception, чтобы сделать это.

Возможно, придется настроить ссылку на класс электронной почты CI, но не уверен, что вы сможете создать его из библиотеки, подобной этой. Я сам не использую класс электронной почты CI, я использую библиотеку Swift Mailer. Но это должно привести вас на правильный путь.

Создайте файл MY_Exceptions.php и поместите его в / application / library / (или в / application / core / для CI 2)

class MY_Exceptions extends CI_Exceptions {

    function __construct()
    {
        parent::__construct();
    }

    function log_exception($severity, $message, $filepath, $line)

    {   
        if (ENVIRONMENT === 'production') {
            $ci =& get_instance();

            $ci->load->library('email');
            $ci->email->from('your@example.com', 'Your Name');
            $ci->email->to('someone@example.com');
            $ci->email->cc('another@another-example.com');
            $ci->email->bcc('them@their-example.com');
            $ci->email->subject('error');
            $ci->email->message('Severity: '.$severity.'  --> '.$message. ' '.$filepath.' '.$line);
            $ci->email->send();
        }


        parent::log_exception($severity, $message, $filepath, $line);
    }

}

Другие советы

Единственное, что осталось от решения, это то, что вам нужно захватить суперобъект CodeIgniters, чтобы загрузить и использовать библиотеку электронной почты (или любую из других библиотек CodeIgniters и нативных функций).

$CI =& get_instance();

После того, как вы это сделали, вы используете $ CI вместо $ this для загрузки библиотеки электронной почты и установки всех параметров. Для получения дополнительной информации нажмите здесь и просмотрите раздел Использование ресурсов CodeIgniter в своей библиотеке. раздел.

О, еще один вариант - получить приложение logrotation, которое поддерживает дайджесты электронной почты. Не уверен, на какой платформе вы работаете, но вы можете просто что-то контролировать файл error_log и посылать вам обновления, может быть не так аккуратно, и, конечно, вы будете ограничены только информацией в error_log. (error_log - это Apache, CI имеет папку / logs / в системе, а IIS - события Windows)

Я собираюсь выпустить проект с открытым исходным кодом, который делает это, и многое другое. Он собирает ошибки, отправляет их в систему отслеживания проблем, обнаруживает дубликаты, превращает их в проблемы и отправляет электронное письмо сотрудникам.

Подробности на https://sourceforge.net/news/?group_id=317819&id = 293422 и версия 0.1.7, о которой она упоминает, должна выйти через пару дней.

Трекер с открытым исходным кодом находится по адресу http://elastik.sourceforge.net/

Любые отзывы приветствуются, спасибо

Я создал проект github с открытым исходным кодом , чтобы реализовать это решение с настраиваемым параметры электронной почты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top