函数debug_backtrace()可以取得错误堆栈信息
使用 try–catch 捕获错误,在 catch 中使用 该函数:
var_dump(debug_backtrace());
输出格式如:
Array (
[0] => Array (
[file] => C:\webfolder\test.php
[line] => 6
[function] => c
[args] => Array (
[0] => Cleveland
)
)
[1] => Array (
[file] => C:\webfolder\test.php
[line] => 3
[function] => b
[args] => Array (
[0] => Glenn
)
)
[2] => Array (
[file] => C:\webfolder\test.php
[line] => 11
[function] => a
[args] => Array (
[0] => Peter
)
)
)
取得文件的位置和行号:
//跟踪错误堆栈,抓取报错的文件位置和行号
$trace = debug_backtrace();
$staceInfo = "";
foreach ($trace as $item){
$staceInfo.=PHP_EOL.$item['file'].":".$item['line'];
}
echo $stackInfo;
输出结果:
D:\wwwroot\zfh.215000.com\include\common.func.php:13193
D:\wwwroot\zfh.215000.com\api\handlers\info.controller.php:369
D:\wwwroot\zfh.215000.com\index.php:1274
提示:使用堆栈的文件名列表+行号列表组合,生成md5(缩短一些)或直接作为唯一键值,则相同错误只记录一次(多次错误只更新最新错误日期),这样就不会因为重复触发而产生大量错误日志。
本篇完,还有疑问?留下评论吧