If I don't catch an exception in PHP, I get a helpful error message in my error.log
file with a stack trace. For example, if I run:
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
then I get this written to my logs:
[Wed Mar 06 10:35:32 2013] [error] [client 86.146.145.175] PHP Fatal error: Uncaught exception 'Exception' with message 'Oh no!' in /var/www/test.php:4\nStack trace:\n#0 /var/www/test.php(7): foo()\n#1 {main}\n thrown in /var/www/test.php on line 4
Sometimes I'd like to catch the exception but still log that detail. I'm imagining something like:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
where log_exception
will write to the error log something in basically the same format as what gets automatically written for an uncaught exception - perhaps literally identical besides having Caught exception
instead of PHP Fatal error: Uncaught exception
.
Is there a built-in function to log exception info like this, or to capture it to a string? I'm imagining something analagous to traceback.format_exc()
in Python.