2017-02-19 55 views
2

我试图在我的错误处理函数中收集调试信息。我可以分析堆栈并获取文件和行号。我也有一些我想打印到日志中的参数,但我不想膨胀日志文件。用于将堆栈跟踪参数打印到日志中的PHP函数

我想打印所有数字,布尔值,字符串(例如前50个字符),对象的类名称,数组的大小,null对于空值以及随后以合理形式出现的任何内容。 它不应该产生新的行,所以我有每行堆栈一行。

由于我不想重新发明轮子,PHP中是否存在一个开箱即用的功能,它的行为如上所述?

回答

0

您可以检查是否有php软件包或库执行日志记录。例如,有一些日志包可以在Logging下使用。

+0

我不想添加另一个lib,因为这应该是简单的 –

0

首先,我想自己做:

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() 

如果没有例外,我们可以创建新的并从那里获得堆栈