有没有办法以某种方式覆盖队列侦听器的输出?
Processed: Illuminate\Queue\CallQueuedHandler@call
不是很有用,如果我能以某种方式输出实际的作业名称,以及实际处理内容的一些参数,那就太好了。
在代码中挖掘,WorkCommand
类使用此行输出作业的名称,但我的实际作业类与此处使用的作业不同。
$this->output->writeln('<error>['.Carbon::now()->format('Y-m-d H:i:s').'] Failed:</error> '.$job->getName());
答案 0 :(得分:3)
您可以通过使用相同的签名注册自己的命令来覆盖输出。当您致电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
。