如何在Laravel 5.1中记录所有事件?我试过了,但得到了这个错误:
达到最大功能嵌套级别"100"
我曾尝试将xdebug嵌套级别设置为更高的值(900),但没有成功。
将以下内容放入EventServiceProvider的boot
函数中。关键是过滤掉"lighte.log"事件。如果不过滤掉这些,日志记录语句将导致对事件处理程序进行递归求值。
请注意,Laravel框架似乎为了自己的目的大量使用了事件,因此您也会在日志中看到许多"内部"框架事件。
public function boot(DispatcherContract $events)
{
parent::boot($events);
Event::listen('*', function()
{
$event = Event::firing();
if(!starts_with($event, "illuminate.log")) {
Log::info("Event fired: " . $event . "n");
}
});
}
受Bryan答案的启发,这里有一个适用于Laravel 10.16.x:的片段
Event::listen('*', static function (string $event): void {
if (Str::startsWith($event, MessageLogged::class)) {
return;
}
logger(sprintf('Event fired: %s', $event));
});
将其粘贴到您的应用程序或任何其他服务提供商的boot
方法中。