我試圖在我的錯誤處理函數中收集調試信息。我可以分析堆棧並獲取文件和行號。我也有一些我想打印到日誌中的參數,但我不想膨脹日誌文件。用於將堆棧跟蹤參數打印到日誌中的PHP函數
我想打印所有數字,布爾值,字符串(例如前50個字符),對象的類名稱,數組的大小,null
對於空值以及隨後以合理形式出現的任何內容。 它不應該產生新的行,所以我有每行堆棧一行。
由於我不想重新發明輪子,PHP中是否存在一個開箱即用的功能,它的行爲如上所述?
我試圖在我的錯誤處理函數中收集調試信息。我可以分析堆棧並獲取文件和行號。我也有一些我想打印到日誌中的參數,但我不想膨脹日誌文件。用於將堆棧跟蹤參數打印到日誌中的PHP函數
我想打印所有數字,布爾值,字符串(例如前50個字符),對象的類名稱,數組的大小,null
對於空值以及隨後以合理形式出現的任何內容。 它不應該產生新的行,所以我有每行堆棧一行。
由於我不想重新發明輪子,PHP中是否存在一個開箱即用的功能,它的行爲如上所述?
您可以檢查是否有php軟件包或庫執行日誌記錄。例如,梨有一些日誌包可以在Logging下使用。
首先,我想自己做:
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()
如果沒有例外,我們可以創建新的並從那裏獲得堆棧
您還可以使用XDebug生成堆棧跟蹤:https://xdebug.org/docs/stack_trace
我不想添加另一個lib,因爲這應該是簡單的 –