Как я могу сохранить трассировку PHP в журнал ошибок? - PullRequest
26 голосов
/ 03 декабря 2011

Я использую это прямо сейчас:

error_log(serialize(debug_backtrace()));

Но я должен каждый раз отменять сериализацию.Есть ли лучший способ хранить следы?

Ответы [ 5 ]

41 голосов
/ 03 декабря 2011

Это должно генерировать читаемую строку:

error_log(print_r(debug_backtrace(), true));

Кроме того, debug_print_backtrace () печатает обратную трассировку как строку, и ее вывод может быть захвачен с помощью обычных функций буфера вывода:

ob_start();
debug_print_backtrace();
error_log(ob_get_clean());
8 голосов
/ 07 июня 2012
    $log = var_export(debug_backtrace(), true);

Затем используйте переменную $log для входа в файл или что-либо еще.

7 голосов
/ 09 ноября 2016

С моей точки зрения, лучший подход - использовать функцию исключения:

$e = new Exception();
$e->getTraceAsString();
4 голосов
/ 03 декабря 2011

Немного некрасиво, но работоспособно, я делаю это:

 error_log('Identifying string so that it doesn\'t just end up as gibberish' . json_encode(debug_backtrace()));
0 голосов
/ 17 апреля 2019

Следующее может быть либо записано в файл .txt, либо вы также можете получить доступ к его содержимому (например, $ content [0]), в отличие от var_export, что немного сложнее:

    $content = unserialize(serialize(debug_backtrace()));
...