13

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

我怎样才能让它在 CodeIgniter 中工作?

4

4 回答 4

18

您可以扩展 Exception 核心类来做到这一点。

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

制作一个文件 MY_Exceptions.php 并将其放在 /application/libraries/ (或 CI 2 的 /application/core/ )

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);
    }

}
于 2008-11-04T02:40:08.730 回答
3

解决方案中遗漏的一件事是您必须获取 CodeIgniters 超级对象才能加载和使用电子邮件库(或任何 CodeIgniters 其他库和本机函数)。

$CI =& get_instance();

完成后,您使用$CI而不是$this加载电子邮件库并设置所有参数。有关更多信息,请单击此处并查看在您的库中使用 CodeIgniter 资源部分。

于 2010-07-31T17:23:10.317 回答
0

哦,另一种选择是获取支持电子邮件摘要的 logrotation 应用程序。不确定你在哪个平台上,但你可以让一些东西监视 error_log 文件并向你发送更新,可能不那么整洁,当然你会仅限于 error_log 中的信息。(error_log 是 Apache,CI 在系统中有 /logs/ 文件夹,IIS 有 Windows 事件)

于 2008-11-04T02:43:16.977 回答
0

我正要发布一个开源项目来做这件事,还有更多。它收集错误,将它们发送到问题跟踪器,检测重复项,将它们变成问题并通过电子邮件发送给员工。

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

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

欢迎任何反馈,谢谢

于 2010-11-16T20:10:21.410 回答