Я пришел к такому же выводу: похоже, что log4php что-то делает только с параметром $throwable
в приложении LoggerAppenderMongoDB.php
.
Базовый класс LoggerAppenderFile
зависит от макета, LoggerLayoutTTCC
, чтобы отформатировать сообщение (как и следовало ожидать).Этот класс имеет метод ignoresThrowable()
, который возвращает true.Хотя этот метод, по-видимому, не вызывается, он мягко сообщает, что авторы, похоже, не собирались замечать ошибку.
Я добавил свой собственный класс макета, который расширяет LoggerLayoutTTCC и переопределяет формат)
class LoggerLayoutTTCCWithException extends LoggerLayoutTTCC
{
public function format(LoggerLoggingEvent $event) {
$format = parent::format($event);
$throwableInfo = $event->getThrowableInformation();
if ($throwableInfo === null) {
return $format;
}
$renderer = new LoggerRendererException();
return $format . $renderer->render($throwableInfo->getThrowable());
}
}