是否可以记录用于php警告的堆栈跟踪?或者捕获一个警告和error_log()吗?
我的错误日志中有一些代码会导致警告,但在不知道堆栈跟踪的情况下,无法知道导致这些警告的原因。
答案 0 :(得分:13)
有一个将set_error_handler()
与ErrorException
结合使用的示例:
https://php.net/manual/en/class.errorexception.php
您只需要在处理函数内部实现自定义日志记录功能。
<强>更新强>
注意,这也适用于警告和许多其他错误类型。要获得完全兼容性,请参阅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文件中启用它的方式,但它有堆栈跟踪(有一些奖励功能,如显示局部变量)。但不建议用于生产环境。
答案 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:没有解决严格的警告级别,请根据需要修改代码...