我正在使用 Laravel,我试图用这个 Log 函数记录一些函数输出:
日志::警告(“一些消息”)
但是如果我想在控制台和日志文件中写入,我需要用不同的功能编写两次相同的消息,如下所示:
Log::warning("some message") //这对日志文件很有用
dump("some message") //这对工匠控制台输出很有用
有一些功能允许我只使用两者之一吗?
您可以使用 Laravel 事件来集成此功能,而无需更改您当前记录信息的方式。
添加Illuminate\Log\Events\MessageLogged事件的侦听器,如果请求来自控制台,则在侦听器中将日志条目输出到控制台 - 使用runningInConsole()。
注册一个名为的新侦听器MessageLoggedListener,例如:
protected $listen = [
'Illuminate\Log\Events\MessageLogged' => [
'App\Listeners\MessageLoggedListener',
],
];
Run Code Online (Sandbox Code Playgroud)生成你的听众 php artisan event:generate
将事件处理程序添加到您的侦听器:
/**
* Handle the event.
*
* @param MessageLogged $event
* @return void
*/
public function handle(MessageLogged $event)
{
if (app()->runningInConsole()) {
$output = new ConsoleOutput();
$output->writeln("<error>{$event->message}</error>");
}
}
Run Code Online (Sandbox Code Playgroud)就是这样!您现在已准备好测试该功能。从控制台命令记录一条消息,例如:
public function handle()
{
Log::error('Hello world! This is an error.');
}
Run Code Online (Sandbox Code Playgroud)
这是您将看到的输出:
$ php artisan command
Hello world! This is an error.
Run Code Online (Sandbox Code Playgroud)
在您的日志文件中,您将看到:
[2018-01-15 16:55:46] local.WARNING: Hello world! This is an error.
Run Code Online (Sandbox Code Playgroud)
您可以通过添加不同的输出样式来改进功能,例如您可能希望error用于错误和info信息。您可以在 Symfony 文档 中阅读有关设置输出样式的信息。