Я пытаюсь собрать отладочную информацию в моей функции обработчика ошибок. Я могу проанализировать стек и получить файл и номер строки. У меня также есть массив аргументов, которые я хотел бы также распечатать в своем журнале, но я не хочу раздувать файл журнала.
Я хочу напечатать все числа, логические значения, строки (например, первые 50 символов), имена классов для объектов, размер массивов, null
для нулей и всего, что приходит позже в разумной форме.
Он не должен производить никаких новых строк, поэтому у меня есть одна строка для каждой записи стека.
Поскольку я не хочу изобретать велосипед, существует ли в PHP функция из коробки, которая будет вести себя так, как описано?
Вы можете проверить, есть ли php-пакеты или библиотеки, которые ведут логи. Например, груша есть несколько пакетов журналов, которые вы можете использовать в логирование.
Сначала я попытался сделать это сам:
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