【问题标题】:Laravel 5.6 change QueuedCommand messages to something more readableLaravel 5.6 将 QueuedCommand 消息更改为更具可读性
【发布时间】:2018-09-01 16:40:47
【问题描述】:

所以,

a 我第一次尝试使用 Commands 类,我想让队列消息比[2018-09-01 17:57:47][276] Processing: Illuminate\Foundation\Console\QueuedCommand更具可读性

所以我所做的是以下;

我用protected $signature = 'recording:convert {recording_id}';protected $description = 'Convert a recording from mkv to mp4 using an recording id and making use of ffmpeg'; 注册了命令ConvertRecording。这有一个空的构造函数,因为我不需要将对象传递给它......而且句柄方法只有一些工作代码还有一些$this->log() 命令...

现在,当我调用 artisan 命令时,我使用以下代码:

$exitCode = Artisan::queue('recording:convert', [
    'recording_id' => $recording_id
]);

它附加到队列中,但我只收到这样的消息:

[2018-09-01 17:57:47][276] Processing: Illuminate\Foundation\Console\QueuedCommand
[2018-09-01 17:58:16][276] Processed:  Illuminate\Foundation\Console\QueuedCommand

如何将其更改为 [2018-09-01 17:58:16] Procesing: Video with ID [video ID here]

【问题讨论】:

    标签: laravel queue laravel-5.6


    【解决方案1】:

    您可能希望使用队列命令做一些他们并不真正打算做的事情。您在日志中看到的正是 Job 的用途——即报告它何时开始以及何时完成(或失败)。它是完成有用工作的命令,因此您的所有输出和日志记录都应该在那里完成。

    命令自然有一些控制台日志记录工具,例如错误、信息和评论,可以帮助您进行调试:

    $this->error('This is an error and will appear highlighted in the console');
    $this->info('This is information');
    $this->comment('This is a comment');
    

    但是,在生产环境中使用这些可能不起作用,因为您的队列工作人员不会登录到控制台(我可能弄错了,因为我从未尝试过查看)。

    我建议使用 ServiceProvider 为您的命令简单地设置一个专用日志文件。

    【讨论】:

    • 在队列中显示特定消息会很棒,因为我想通过该控制台(在生产中)提供反馈......但我认为我必须更深入地研究
    • 我认为这可能是不可能的,因为您的队列通常会在可能没有控制台登录的进程下运行。但我对操作系统的工作原理还不够熟悉,无法直接说明这一点。如果你想要实时输出,那么 Laravel 的广播功能可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多