Heim > php教程 > php手册 > Hauptteil

php自定义错误类,实现错误追踪功能

WBOY
Freigeben: 2016-06-06 19:38:20
Original
1632 Leute haben es durchsucht

php环境都可以使用,使用方法: require./myErrorHandler.php; //显示所有的错误 error_reporting(-1); ini_set(display_error,1); //调用错误类 set_error_handler(array(myErrorHandler,deal)); 无 ?php/** * Created by PhpStorm. * User: yangyulong * Da

php环境都可以使用, 使用方法:
require './myErrorHandler.php';
//显示所有的错误
error_reporting(-1);
ini_set('display_error', 1);
//调用错误类
set_error_handler(array('myErrorHandler', 'deal'));
<?php
/**
 * Created by PhpStorm.
 * User: yangyulong
 * Date: 2015/5/8
 * Time: 9:46
 */

class myErrorHandler {
    public $message='';
    public $filename='';
    public $line=0;
    public $vars=array();

    public function __construct($message, $filename, $line, $vars){
        $this->message = $message;
        $this->filename = $filename;
        $this->line = $line;
        $this->vars = $vars;
    }

    public static function deal($errno, $errmsg, $filename, $line, $vars){
        $self = new self($errmsg, $filename, $line, $vars);

        switch($errno){
            case E_USER_ERROR:
                return $self->dealError();
                break;
            case E_USER_WARNING:
            case E_WARNING:
                return $self->dealWarning();
                break;
            case E_USER_NOTICE:
            case E_NOTICE:
                return $self->dealNotice();
                break;
            default:
                return false;
        }
    }

    /**
     * 产生致命错误
     */
    public function dealError(){
        //开启内存缓存
        ob_start();
        debug_print_backtrace();
        //获取内存中的信息
        $backtrace = ob_get_flush();
        $errorMsg = "
            出现了致命的错误,如下:
            产生的错误文件:{$this->filename}<br />
            产生错误的信息:{$this->message}<br />
            禅僧错误的行号:{$this->line}<br />
            追踪信息:{$backtrace}<br />
            ==================================
        ";
        //发送邮件
        error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
        exit(1);
    }

    /**
     * 错误警告
     * @return bool
     */
    public function dealWarning(){
        $errorMsg = "
            出现了警告的错误,如下:
            产生的错误文件:{$this->filename}<br />
            产生错误的信息:{$this->message}<br />
            错误警告的行号:{$this->filename}:{$this->line}<br />
            ==================================
        ";
        //发送邮件
        return error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
    }

    /**
     * 定义通知级别的错误
     * @return bool
     */
    public function dealNotice(){
        $datetime = date('Y-m-d H:i:s', time());
        $errorMsg = "
            出现了通知的错误,如下:
            产生的错误文件:{$this->filename}<br />
            产生错误的信息:{$this->message}<br />
            禅僧错误的行号:{$this->filename}:{$this->line}<br />
            通知时间:{$datetime}
            ==================================
        ";
        //发送邮件
        return error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
    }
}
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage