debug_print_backtrace()到日志文件的字符串

时间:2013-10-28 20:26:23

标签: php debugging logging

我有问题。我想在日志文件中记录特定情况下的回溯。 debug_print_backtrace()为我的目的构建了一个正确的字符串,但debug_print_backtrace()在屏幕上打印了跟踪而不是返回它。

有什么想法吗?

3 个答案:

答案 0 :(得分:17)

使用其他功能。 debug_backtrace()返回一个可以循环,格式化和保存的数组:

$data = debug_backtrace();

或者对格式化的输出字符串使用输出缓冲:

ob_start();
debug_print_backtrace();
$data = ob_get_clean();

答案 1 :(得分:9)

实际上可以用更少的代码来实现。避免使用缓冲开销......

$error_string = (new Exception)->getTraceAsString();

它为您提供与存储在$ error_string中的debug_print_backtrace()完全相同的输出。

如果您想获得更多有价值的堆栈跟踪(行号,本地对象变量等)的更多信息,请尝试...

$error_string = print_r($e->getTrace(), true);

答案 2 :(得分:-1)

要添加@HoldOffHunger给出的答案,以下内容足以用于记录目的:

$this->log(print_r(debug_backtrace(), true));