Debug_print_backtrace() для String для лог файла

У меня проблема. Я хотел бы зарегистрировать обратную трассировку в конкретном случае в лог файле. debug_print_backtrace() строит правильную строку для моих целей, но debug_print_backtrace() печатает трассировку на экране вместо ее возвращения.

Любые идеи?

Ответ 1

Используйте другую функцию. debug_backtrace() возвращает массив, который вы можете прокручивать, форматировать и сохранять:

$data = debug_backtrace();

Или используйте буферизацию вывода для форматированной выходной строки:

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

Ответ 2

Это возможно сделать с еще меньшим количеством кода. Избегайте накладных расходов буферизации с помощью...

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

Это дает вам тот же результат, что и debug_print_backtrace(), хранящийся в $error_string.

И если вы хотите получить более подробную информацию о более ценной stacktrace (номера строк, локальные объекты vars и т.д.), попробуйте...

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

Ответ 3

Этого достаточно для целей ведения журнала:

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