错误日志handeling到自定义文件

时间:2015-11-30 11:11:05

标签: php error-handling

我想记录由error_reporting(E_ALL)生成的所有错误;在日志文件中。 因此,当PHP脚本中出现错误时,您可以正常看到错误。 我尝试了很多东西,但我最接近的是白衣

asdasc();  // generate error
$i=error_get_last();
if($i['message']!==''){
error_log(date('Y-m-d-h:m:s') . " | type = " .$i ['type']." message = " .$i ['message']." file = " .$i ['file']." line = " .$i ['line'] , 3, "my-errors.log");}

这种方式我看到日期有错误,但我想看到的是我应该看到的错误,如果它在我的屏幕上。类似的东西:
    SQLSTATE [HY000] [1045]拒绝访问用户' root' @' localhost' (使用密码:否)或     致命错误:在第125行的C:\ xampp \ htdocs ... \ index.php中调用未定义的函数blabla()

有办法做到这一点吗?

先进的thnx。

1 个答案:

答案 0 :(得分:1)

使用error_get_last()

error_log(date('Y-m-d-h:m:s') . " | error = " . print_r(error_get_last(), true), 3, "my-errors.log");

您也可以在应用程序中设置自己的错误处理类:

class MyErrorHandlerClass
{
    public function MyErrorHandlerMethod($errno, $errmsg, $filename, $linenum, $vars)
    {
        // log you error
    }
}   

然后您可以定义自己的错误处理程序:

$ErrorHandler = new MyErrorHandlerClass();
set_error_handler(array($ErrorHandler, 'MyErrorHandlerMethod'));

error_reporting() btw。不会产生错误,它只控制显示错误的级别。发生错误时,始终会生成其堆栈跟踪。