PHP - 记录堆栈跟踪警告?

时间:2011-06-21 14:15:12

标签: php warnings stack-trace error-log

是否可以记录用于php警告的堆栈跟踪?或者捕获一个警告和error_log()吗?

我的错误日志中有一些代码会导致警告,但在不知道堆栈跟踪的情况下,无法知道导致这些警告的原因。

4 个答案:

答案 0 :(得分:13)

有一个将set_error_handler()ErrorException结合使用的示例:

https://php.net/manual/en/class.errorexception.php

您只需要在处理函数内部实现自定义日志记录功能。


<强>更新

注意,这也适用于警告和许多其他错误类型。要获得完全兼容性,请参阅set_error_handler()的手册:

https://php.net/set_error_handler

答案 1 :(得分:4)

在脚本开头抛出这个:

set_error_handler(function($severity, $message, $file, $line) {
    if (error_reporting() & $severity) {
        throw new ErrorException($message, 0, $severity, $file, $line);
    }
});

删除要记录所有内容的if,即使它已被删除。

答案 2 :(得分:1)

我相信xdebug将会记录,如果你在php.ini文件中启用它的方式,但它有堆栈跟踪(有一些奖励功能,如显示局部变量)。但不建议用于生产环境。

XDebug Stack Traces

答案 3 :(得分:0)

您在这里:

var express = require('express')
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' }) // folder in which the upload will be saved

var app = express()

app.post('/', upload.single('xml-name-up-to-you'), function (req, res, next) {
  // req.file is the `xml-name-up-to-you` file
  // req.body will hold the text fields, if there were any
})

通常会引发错误/异常,仅打印通知/警告。

PS:没有解决严格的警告级别,请根据需要修改代码...