Class 'Log' 未找到
Class 'Log' not found
我是 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!']);
}
}
如果我 运行 我收到一条错误消息:
DocumentsController.php 第 22 行中的 FatalErrorException:Class 'Log' 未找到
所以 Log facade 似乎有问题(不太确定它们在 Laravel/Lumen 中是如何工作的)。
但是如果我更改 Log::info() 调用,手动将日志服务从 DI 容器中拉出,那么它就可以工作了:
$app = app();
$app->make('log')->info('test');
关于为什么官方文档中描述的外观方法不起作用的任何想法?
Doh,当然在发布这个问题后 5 分钟我就弄明白了。我在应用程序库 class (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() 调用默认被注释掉。
我取消了注释,现在可以使用了。
我是 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!']);
}
}
如果我 运行 我收到一条错误消息:
DocumentsController.php 第 22 行中的 FatalErrorException:Class 'Log' 未找到
所以 Log facade 似乎有问题(不太确定它们在 Laravel/Lumen 中是如何工作的)。
但是如果我更改 Log::info() 调用,手动将日志服务从 DI 容器中拉出,那么它就可以工作了:
$app = app();
$app->make('log')->info('test');
关于为什么官方文档中描述的外观方法不起作用的任何想法?
Doh,当然在发布这个问题后 5 分钟我就弄明白了。我在应用程序库 class (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() 调用默认被注释掉。
我取消了注释,现在可以使用了。