PHP错误日志跟踪记录register_shutdown_function/set_error_handler/set_exception_handler

版权声明:本文为博主原创文章,欢迎转载,转载时请以超链接形式标明文章原始出处。 https://blog.csdn.net/lilongsy/article/details/85158345

写程序不可避免有错误,而调试错误就很重要了,需要看错误信息,错误发生的文件、行号等,特别是对于线上的系统调试,不能让用户看到错误信息,这就需要把错误信息记录日志里。除了使用try catch,还可以使用set_error_handler

// 定义PHP程序执行完成后执行的函数
register_shutdown_function(['Debug', 'fatalError']);

// 设置一个用户定义的错误处理函数
set_error_handler(["Debug", "appError"]);

//自定义异常处理。
set_exception_handler(['Debug', 'appException']);

下面简单写了一段错误记录的小程序。

<?php
function myErrorHandler($errno, $errstr, $errfile, $errline){
    $f = fopen("log.txt", "a");
    fwrite($f, $errno."\n".$errstr."\n".$errfile."\n".$errline."\n");
    fwrite($f, var_export(debug_backtrace(), true));
    fclose($f);
    // error_log($errstr);
    // 返回true 在前端不报错,返回false就会在前端报错
    return true;
}

// 设置错误处理函数
set_error_handler("myErrorHandler", E_ALL);

// 测试
function fe() {
    $a = 1/0;
    for($i=0;$i<10;$i++) {
        echo($i."<br/>");
    }
    return 0;
}
fe();

参考:
http://php.net/manual/zh/book.errorfunc.php
http://php.net/manual/zh/ref.funchand.php

猜你喜欢

转载自blog.csdn.net/lilongsy/article/details/85158345