我试图在我的错误处理函数中收集调试信息。我可以分析堆栈并获取文件和行号。我也有一些我想打印到日志中的参数,但我不想膨胀日志文件。用于将堆栈跟踪参数打印到日志中的PHP函数
我想打印所有数字,布尔值,字符串(例如前50个字符),对象的类名称,数组的大小,null
对于空值以及随后以合理形式出现的任何内容。 它不应该产生新的行,所以我有每行堆栈一行。
由于我不想重新发明轮子,PHP中是否存在一个开箱即用的功能,它的行为如上所述?
我试图在我的错误处理函数中收集调试信息。我可以分析堆栈并获取文件和行号。我也有一些我想打印到日志中的参数,但我不想膨胀日志文件。用于将堆栈跟踪参数打印到日志中的PHP函数
我想打印所有数字,布尔值,字符串(例如前50个字符),对象的类名称,数组的大小,null
对于空值以及随后以合理形式出现的任何内容。 它不应该产生新的行,所以我有每行堆栈一行。
由于我不想重新发明轮子,PHP中是否存在一个开箱即用的功能,它的行为如上所述?
您可以检查是否有php软件包或库执行日志记录。例如,梨有一些日志包可以在Logging下使用。
首先,我想自己做:
debug_backtrace();
给出了阵列,而我处理的使用:
protected function backTraceLine(array $line)
{
$ret = "";
if (isset ($line['file']))
$ret = $ret . $line['file'];
if (isset ($line['function']))
$ret = $ret . $line['function'];
if (isset ($line['file']))
$ret = "[" . $ret . $line['line'] . "]";
try {
$args = $line['args'];
if (is_array($args))
$ret = $ret . "(" . implode(",", $args) . ")";
} catch (Exception $e) {
}
return $ret;
}
但后来我发现这个方法,它不正是我需要的:
$exception->getTraceAsString()
如果没有例外,我们可以创建新的并从那里获得堆栈
您还可以使用XDebug生成堆栈跟踪:https://xdebug.org/docs/stack_trace
我不想添加另一个lib,因为这应该是简单的 –