2017-02-19 84 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() 

如果沒有例外,我們可以創建新的並從那裏獲得堆棧