2016-04-17 8 views
4

Gibt es eine Möglichkeit, die Ausgabe des Warteschlangen-Listeners irgendwie zu überschreiben?Laravel-Warteschlangen-Listener-Ausgabe überschreiben [Nur Laravel <= 5.2]

Processed: Illuminate\Queue\[email protected] ist nicht sehr nützlich, es wäre nett, wenn ich irgendwie den tatsächlichen Jobnamen und einige Parameter für das, was tatsächlich verarbeitet wird, ausgeben könnte.

In den Code gegraben, und WorkCommand Klasse verwendet diese Zeile, um den Namen des Jobs auszugeben, aber meine eigentliche Jobklasse ist nicht derselbe Job, der hier verwendet wird.

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

Antwort

2

können Sie die Ausgabe überschreiben, indem Sie Ihren eigenen Befehl mit der gleichen Signatur Registrierung. Wenn Sie php artisan queue:work aufrufen, hat Ihr Befehl Vorrang.

So stellen Sie Ihren Befehl, vererben Laravel des WorkCommand und außer Kraft setzen ihre writeOutput() Methode:

<?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) 
    { 
     // ... 
    } 
} 

Und denken Sie daran es app/Console/Kernel.php mit dem Kernel zu registrieren.