Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

debug_print_backtrace() to String for log-file

I have a problem. I would like to log the backtrace in a specific case in a log-file. debug_print_backtrace() builds a correct string for my purposes but debug_print_backtrace() prints the trace on the screen instead of returning it.

like image 874
phip1611 Avatar asked Oct 28 '13 20:10

phip1611


2 Answers

Use another function. debug_backtrace() returns an array that you can loop through, format and save:

$data = debug_backtrace();

Or use output buffering for the formatted output string:

ob_start();
debug_print_backtrace();
$data = ob_get_clean();
like image 113
AbraCadaver Avatar answered Oct 18 '22 18:10

AbraCadaver


It's possible to do it with even less code, actually. Avoid the overhead of buffering with...

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

That gives you the exact same output as debug_print_backtrace() stored to the $error_string variable.

And if you want to get more information for a more valuable stacktrace (line numbers, local object vars, etc.), try...

$error_string = print_r($e->getTrace(), true);
like image 28
HoldOffHunger Avatar answered Oct 18 '22 19:10

HoldOffHunger