课程' Log'未找到

时间:2016-06-11 02:09:45

标签: lumen lumen-5.2

我是Lumen和Laravel的新手,但我必须使用Lumen编写REST API。我已经设置了一个控制器,而且我在使用记录器时遇到了问题。 我已按照文档:Lumen docs

这是我的控制器app / Http / Controllers / DocumentsController.php:     

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Log;

class DocumentsController extends Controller
{
    public function index()
    {
        Log::info('test');
        return response()->json(['result' => 'Oh hey!']);
    }
}

如果我执行此操作,我会收到错误消息:

DocumentsHtroller.php第22行中的

FatalErrorException:Class' Log'找不到

所以Log facade似乎有些问题(不太确定这些在Laravel / Lumen中是如何工作的)。

但是,如果我更改了Log :: info()调用,要手动将日志服务从DI容器中拉出来,那么它可以工作:

    $app = app();
    $app->make('log')->info('test');

关于为什么官方文档中描述的Facade方法不起作用的任何想法?

1 个答案:

答案 0 :(得分:11)

Doh当然在发布这个问题后5分钟我发现了。我在Application基类(vendor / laravel / lumen-framework / src / Application.php)中注意到以下别名:

public function withFacades()
{
    Facade::setFacadeApplication($this);

    if (! static::$aliasesRegistered) {
        static::$aliasesRegistered = true;

        class_alias('Illuminate\Support\Facades\Auth', 'Auth');
        class_alias('Illuminate\Support\Facades\Cache', 'Cache');
        class_alias('Illuminate\Support\Facades\DB', 'DB');
        class_alias('Illuminate\Support\Facades\Event', 'Event');
        class_alias('Illuminate\Support\Facades\Gate', 'Gate');
        class_alias('Illuminate\Support\Facades\Log', 'Log');
        class_alias('Illuminate\Support\Facades\Queue', 'Queue');
        class_alias('Illuminate\Support\Facades\Schema', 'Schema');
        class_alias('Illuminate\Support\Facades\URL', 'URL');
        class_alias('Illuminate\Support\Facades\Validator', 'Validator');
    }
}

但是从未调用此方法,因为在bootstrap / app.php中,$ this-> withFacades()调用默认被注释掉。

我取消注释它,现在它可以工作。