Skip to content
Justin SilverTECHNOLOGY, TRAVEL & EVERYTHING IN BETWEEN

Technology

Writing to the PHP error_log with var_dump & print_r

November 1, 2012

Writing objects to the PHP error log using error_log() can be useful, but it isn't allowed - you can only write strings there. What to do? Well, luckily there are options for both print_r() - human friendly - and var_dump() - parseable - that will let you convert an object into a string.

Use print_r()

Using print_r() is the easiest, since the second parameter to the function says that we want to send the output to a variable rather than echoing it. Thus, to write to the error_log you just need to use the following code.

$object = new MyObject();
error_log( print_r( $object, true ) );

Use var_dump()

If you want the more detailed output of var_dump(), it's a bit trickier, but still pretty easy. In a nutshell, since you can only echo the results you have to capture the output buffer with ob_start(), assign it to a variable, and then clean the buffer with ob_end_clean() allowing you to write the resulting variable to the error_log.

function var_error_log( $object=null ){
    ob_start();                    // start buffer capture
    var_dump( $object );           // dump the values
    $contents = ob_get_contents(); // put the buffer into a variable
    ob_end_clean();                // end capture
    error_log( $contents );        // log contents of the result of var_dump( $object )
}

$object = new MyObject();
var_error_log( $object );