用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2508|回复: 3
收起左侧

[内核] 如何捕获CI反馈的错误信息,并将其存储到数据库中?

[复制链接]
发表于 2017-10-24 10:05:23 | 显示全部楼层 |阅读模式
本帖最后由 1137716847 于 2017-10-24 11:01 编辑

如何捕获CI反馈的错误信息(包含致命错误),并将其存储到数据库中?
 楼主| 发表于 2017-10-24 11:53:04 | 显示全部楼层
用了一个比较笨的方法解决了
 楼主| 发表于 2017-10-24 11:56:27 | 显示全部楼层
本帖最后由 1137716847 于 2017-10-24 14:25 编辑

在system\core\Common.php的第620行加入
PHP复制代码
<?php
                require_once APPPATH . 'hooks/AnomalyCapture.php';
                (new AnomalyCapture())->capture(array(
                        'type' => $severity,
                        'message' => $message,
                        'file' => $filepath,
                        'line' => $line,
                ) , $is_error);
?>
 
复制代码

屏蔽掉第640行的exit(1)

在 application\hooks 中新建AnomalyCapture.php


PHP复制代码
<?php
class AnomalyCapture{
 
        function capture($last_error , $is_error = false){
                if( ! isset($last_error)) return false;
 
               
                $CI = CI_Controller::get_instance();
                if($CI == NULL){
                        require_once BASEPATH.'core/Controller.php';
                        $CI = new CI_Controller;
                        $CI = CI_Controller::get_instance();
                }
 
                $CI->load->model('Admin_user_model');
 
                $CI->Admin_user_model->test();
                if($is_error) exit(1);
        }        
 
}
?>
 
复制代码


评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2017-10-27 10:02:20 | 显示全部楼层
这个确实可以通过添加hooks解决,但不建议修改核心代码。原来见过相应的代码,现在找不到了。回头有空我再找一下。

本版积分规则