在CodeIgniter中,如何通过电子邮件发送给我的PHP错误消息?

时间:2008-11-04 02:07:50

标签: php email codeigniter error-logging

我想通过电子邮件收到错误日志。例如,如果出现Warning-level错误消息,我想收到有关它的电子邮件。

如何在CodeIgniter中使用它?

5 个答案:

答案 0 :(得分:16)

您可以扩展Exception核心类来执行此操作。

可能必须调整对CI电子邮件类的引用,不确定是否可以从这样的库中实例化它。我自己不使用CI的电子邮件类,我一直在使用Swift Mailer库。但这应该让你走上正确的道路。

创建一个文件MY_Exceptions.php并将其放在/ application / libraries /中(或者在/ 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);
    }

}

答案 1 :(得分:3)

解决方案遗漏的一件事是你必须抓住CodeIgniters超级对象来加载和使用电子邮件库(或任何CodeIgniters其他库和本机函数)。

$CI =& get_instance();

完成后,使用$CI代替$this加载电子邮件库并设置所有参数。有关详细信息click here,请查看在库中使用CodeIgniter资源部分。

答案 2 :(得分:0)

哦,另一种选择是获取支持通过电子邮件发送摘要的日志转换应用程序。不确定你所使用的平台,但你可能只是有一些东西监视error_log文件并向你发送更新,可能不是很整洁,当然你只会被限制在error_log中的信息。 (error_log是Apache,CI在系统中有/ logs /文件夹,IIS有Windows事件)

答案 3 :(得分:0)

我即将发布一个开源项目来实现这一目标,等等。它收集错误,将它们发送到问题跟踪器,检测重复项,将它们变成问题并通过电子邮件发送给员工。

详细信息位于https://sourceforge.net/news/?group_id=317819&id=293422,其提及的版本0.1.7将在几天后发布。

开源跟踪器位于http://elastik.sourceforge.net/

欢迎任何反馈,谢谢

答案 4 :(得分:0)

我设置open source github project以使用可配置的电子邮件参数实现此解决方案。