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

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

Как мне заставить это работать в CodeIgniter?

Ответы [ 5 ]

16 голосов
/ 04 ноября 2008

Вы можете расширить базовый класс 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);
    }

}
3 голосов
/ 31 июля 2010

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

$CI =& get_instance();

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

0 голосов
/ 01 ноября 2012

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

0 голосов
/ 16 ноября 2010

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

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

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

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

0 голосов
/ 04 ноября 2008

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

...