调用未定义的方法Illuminate \ Support \ Facades \ Log :: listen()

时间:2013-12-11 09:10:28

标签: php laravel laravel-4

你好

我正在尝试为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()函数?

1 个答案:

答案 0 :(得分:3)

服务提供商中的register()方法无法保证Laravel在调用时已完全启动。它应该只用于注册 IoC绑定,而不是更多。永远不要在这个方法中加入任何应用程序逻辑。

而是将代码移动到Laravel和您的包完全加载后调用的boot()方法。

public function boot() 
{
    Log::listen(function($level, $message, $context)
    {
        ...
    });
}