你好
我正在尝试为Laravel 4编写一个自定义程序包来执行一些额外的日志记录。根据Laravel文档(http://laravel.com/docs/errors),我可以创建一个监听器并在Closure中做我需要的。
这是ServiceProvider中的注册函数
使用Log;
public function register()
{
Log::listen(function($level, $message, $context)
{
$vmlog = new Vmlog();
$vmlog->log($level, $message, $context);
});
}
我收到以下错误:
Call to undefined method Illuminate\Support\Facades\Log::listen()
这是别名条目(我没有更改)。
'aliases' => array(
...
'Log' => 'Illuminate\Support\Facades\Log',
...
),
我在哪里错了,为什么我不能访问listen()函数?
答案 0 :(得分:3)
服务提供商中的register()
方法无法保证Laravel在调用时已完全启动。它应该只用于注册 IoC绑定,而不是更多。永远不要在这个方法中加入任何应用程序逻辑。
而是将代码移动到Laravel和您的包完全加载后调用的boot()
方法。
public function boot()
{
Log::listen(function($level, $message, $context)
{
...
});
}