PHP регистрирует только неотображаемые исключения. Я также хотел бы зарегистрировать все мои за исключением исключений.PHP log catch exception
Пример 1
try {
$book->getBook();
} catch(Exception $e) {
error_log($e);
$error = 'A problem occurred getting your book'
}
Это прекрасно работает, но я предпочел бы не иметь, чтобы продолжать писать error_log
повсюду.
Так вместо того, чтобы я продлил Exception
класс следующим образом:
Пример 2
class ExceptionLog extends Exception {
public function __construct($message, $code = 0, Exception $previous = null) {
error_log($this);
parent::__construct($message, $code, $previous);
}
}
, то я могу сделать:
try {
$book->getBook();
} catch(ExceptionLog $e) {
$error = 'A problem occurred getting your book'
}
Одна проблема здесь в том, что сообщение, которое регистрируется, несколько отличается. В первом примере запись журнала:
[01-Jan-2016 19:24:51 Europe/London] PHP Fatal error: Uncaught exception 'Exception' with message 'Could not get book' in book.php:39
Во втором примере опущена сообщение:
[01-Jan-2016 19:24:51 Europe/London] exception 'ExceptionLog' in book.php:39
Это единственный способ, чтобы получить доступ к свойствам родительского класса Exception
и построить журнал ошибок строка вручную?