Log przechwyconego wyjątku za pomocą śledzenia stosu

Jeśli nie przechwytuję wyjątku w PHP, otrzymuję pomocny komunikat o błędzie w moimerror.log plik ze śladem stosu. Na przykład, jeśli uruchomię:

<?php

  function foo() {
    throw new Exception('Oh no!');
  } 

  foo();

?>

potem dostaję to do moich dzienników:

[Śro Mar 06 10:35:32 2013] [błąd] [klient 86.146.145.175] PHP Fatal error: Nieprzechwycony wyjątek „Wyjątek” z komunikatem „O nie!” w /var/www/test.php:4 ślad śledzenia: n # 0 /var/www/test.php(7): foo () n # 1 {main} wrzucony do / var / www / test.php w linii 4.

Czasami chciałbym przechwycić wyjątek, ale nadal rejestrować ten szczegół. Wyobrażam sobie coś takiego:

<?php

  function foo() {
    throw new Exception('Oh no!');
  } 

  try {
      foo();
  } catch (Exception $e) {
      log_exception($e);
  }

?>

gdzielog_exception zapisze w dzienniku błędów coś w zasadzie w tym samym formacie, co automatycznie zapisywane dla nieprzechwyconego wyjątku - być może dosłownie identyczne, oprócz posiadaniaCaught exception zamiastPHP Fatal error: Uncaught exception.

Czy istnieje wbudowana funkcja do rejestrowania takich informacji o wyjątku lub przechwytywania go do łańcucha? Wyobrażam sobie coś złegotraceback.format_exc() w Pythonie.

questionAnswers(4)

yourAnswerToTheQuestion