【问题标题】:Override Laravel queue listener output [Laravel <=5.2 only]覆盖 Laravel 队列侦听器输出 [仅限 Laravel <=5.2]
【发布时间】:2016-08-09 05:30:37
【问题描述】:
有没有办法以某种方式覆盖队列侦听器的输出?
Processed: Illuminate\Queue\CallQueuedHandler@call 不是很有用,如果我能以某种方式输出实际的作业名称以及实际正在处理的内容的一些参数,那就太好了。
挖代码,WorkCommand class 使用此行输出作业名称,但我的实际作业类与此处使用的作业不同。
$this->output->writeln('<error>['.Carbon::now()->format('Y-m-d H:i:s').'] Failed:</error> '.$job->getName());
【问题讨论】:
标签:
laravel
queue
laravel-5.2
【解决方案1】:
您可以通过使用相同的签名注册您自己的命令来覆盖输出。当您调用php artisan queue:work 时,您的命令将优先。
只要让你的命令继承自 Laravel 的 WorkCommand 并覆盖它的 writeOutput() 方法:
<?php // app/Console/Command/QueueWorkCommand.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Contracts\Queue\Job;
use Illuminate\Queue\Console\WorkCommand;
class QueueWorkCommand extends WorkCommand
{
/**
* Write the status output for the queue worker.
*
* @param \Illuminate\Contracts\Queue\Job $job
* @param bool $failed
* @return void
*/
protected function writeOutput(Job $job, $failed)
{
// ...
}
}
记得向内核注册它app/Console/Kernel.php。