覆盖Laravel队列侦听器输出[仅限Laravel< = 5.2]

时间:2016-04-17 14:17:26

标签: laravel queue laravel-5.2

有没有办法以某种方式覆盖队列侦听器的输出?

Processed: Illuminate\Queue\CallQueuedHandler@call不是很有用,如果我能以某种方式输出实际的作业名称,以及实际处理内容的一些参数,那就太好了。

在代码中挖掘,WorkCommand类使用此行输出作业的名称,但我的实际作业类与此处使用的作业不同。

$this->output->writeln('<error>['.Carbon::now()->format('Y-m-d H:i:s').'] Failed:</error> '.$job->getName());

1 个答案:

答案 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