Если я не поймаю исключение в PHP, я получаю сообщение об ошибке в моем error.log
файле с трассировкой стека. Например, если я запустил:
<?php
function foo() {
throw new Exception('Oh no!');
}
foo();
?>
то я получаю это в моих журналах:
[Wed Mar 06 10:35:32 2013] [error] [клиент 86.146.145.175] PHP Fatal error: Неотключить исключение "Исключение" с сообщением "О нет!". в /var/www/test.php:4\nStack trace:\n # 0/var/www/test.php(7): foo()\n # 1 {main}\n выбрасывается в /var/www/test.php в строке 4
Иногда мне хотелось бы получить исключение, но все же записывать эту деталь. Я представляю себе что-то вроде:
<?php
function foo() {
throw new Exception('Oh no!');
}
try {
foo();
} catch (Exception $e) {
log_exception($e);
}
?>
где log_exception
будет записывать в журнал ошибок что-то в основном в том же формате, что и то, что автоматически записывается для неперехваченного исключения - возможно, буквально идентично, кроме Caught exception
вместо PHP Fatal error: Uncaught exception
.
Есть ли встроенная функция для регистрации информации об исключении, подобной этой, или для ее записи в строку? Я представляю себе что-то похожее на traceback.format_exc()
в Python.