【问题标题】:debug_print_backtrace() to String for log-filedebug_print_backtrace() 为日志文件的字符串
【发布时间】:2013-11-07 19:04:48
【问题描述】:

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

【问题讨论】:

    标签: php debugging logging


    【解决方案1】:

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

    $data = debug_backtrace();
    

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

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

    【讨论】:

      【解决方案2】:

      实际上,甚至可以用更少的代码来完成。避免使用...进行缓冲的开销

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

      这为您提供与存储到 $error_string 变量中的 debug_print_backtrace() 完全相同的输出。

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

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

      【讨论】:

        【解决方案3】:

        为了补充@HoldOffHunger 给出的答案,以下内容足以用于记录目的:

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

        【讨论】:

          猜你喜欢
          • 2017-07-06
          • 1970-01-01
          • 1970-01-01
          • 2013-09-09
          • 2019-05-04
          • 2015-04-10
          • 1970-01-01
          • 2019-06-13
          • 1970-01-01
          相关资源
          最近更新 更多