如何将PHP回溯保存到错误日志?

时间:2011-12-03 16:56:02

标签: php error-handling backtrace

我现在正在使用它:

error_log(serialize(debug_backtrace()));

但我必须每次都反序化它。有没有更好的存储回溯的方法?

6 个答案:

答案 0 :(得分:41)

这应该生成一个可读的字符串:

error_log(print_r(debug_backtrace(), true));

此外,debug_print_backtrace()将后跟踪打印为字符串,并且可以使用常规输出缓冲区函数捕获其输出:

ob_start();
debug_print_backtrace();
error_log(ob_get_clean());

答案 1 :(得分:8)

    $log = var_export(debug_backtrace(), true);

然后使用变量$log登录文件或其他任何内容。

答案 2 :(得分:7)

从我的角度来看,最好的方法是使用异常功能:

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

答案 3 :(得分:4)

有点难看但可行,我这样做:

 error_log('Identifying string so that it doesn\'t just end up as gibberish' . json_encode(debug_backtrace()));

答案 4 :(得分:0)

以下内容可以写到.txt文件中,也可以访问它的内容(例如$ content [0]),而不是var_export,我觉得这有点棘手:

    $content = unserialize(serialize(debug_backtrace()));

答案 5 :(得分:0)

对于那些可能想要更紧凑版本的人,这也可以解决问题:

error_log((new Exception())->getTraceAsString())