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

phi*_*611 17 php debugging logging

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

有任何想法吗?

Abr*_*ver 19

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

$data = debug_backtrace();
Run Code Online (Sandbox Code Playgroud)

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

ob_start();
debug_print_backtrace();
$data = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)


Hol*_*ger 11

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

$error_string = (new Exception)->getTraceAsString();
Run Code Online (Sandbox Code Playgroud)

这将为您提供与debug_print_backtrace()存储到$ error_string 的完全相同的输出.

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

$error_string = print_r($e->getTrace(), true);
Run Code Online (Sandbox Code Playgroud)