【问题标题】:Call to undefined method Illuminate\Support\Facades\Log::listen()调用未定义的方法 Illuminate\Support\Facades\Log::listen()
【发布时间】:2013-12-11 09:10:28
【问题描述】:

你好

我正在尝试为 Laravel 4 编写一个自定义包,以执行一些额外的日志记录。根据 Laravel 文档 (http://laravel.com/docs/errors),我可以创建一个侦听器并在 Closure 中做我需要做的事情。

这是ServiceProvider里面的注册函数

使用日志;

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()函数?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    服务提供者中的register() 方法不能保证调用时 Laravel 已经完全启动。它应该只用于注册 IoC 绑定,仅此而已。切勿在此方法中放置任何应用程序逻辑。

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

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

    【讨论】:

    • @SynackSA 没问题,我们都制作它们 ;-)
    猜你喜欢
    • 1970-01-01
    • 2019-10-15
    • 2020-01-24
    • 2019-03-04
    • 2023-03-24
    • 2019-05-14
    • 2021-10-29
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多