gpt4 book ai didi

php - 如何在 Laravel 中自定义作业的日志输出?

转载 作者:行者123 更新时间:2023-12-04 14:19:27 35 4
gpt4 key购买 nike

我看到 Laravel 使用 Monolog 库来处理日志。我在工作中有以下处理方法:

ApiUpdateItemJob.php:

public function handle()
{
$data = [
'id' => $this->item_id,
'data[status]' => $this->status,
];

$response = ApiFacedeClient::exec('Item', 'update', $data);

$result = json_decode($response->getBody());
}

在 worker 的日志(主管)中,我看到以下内容:

[2019-12-17 02:13:13][40770367] Processed: App\Jobs\UpdateItemStatus
[2019-12-17 05:11:53][40792760] Processing: App\Jobs\UpdateItemStatus
[2019-12-17 05:11:54][40792761] Processing: App\Jobs\UpdateItemStatus
[2019-12-17 05:11:54][40792760] Processed: App\Jobs\UpdateItemStatus
[2019-12-17 05:11:54][40792762] Processing: App\Jobs\UpdateItemStatus

我应该向工作添加什么才能看到以下行:

[2019-12-17 05:11:54][40792762] Processing item id #333333 (Status [200 OK]): App\Jobs\UpdateItemStatus

最佳答案

你在 worker 的日志文件中看到的日志是 Laravel 输出的,并且是不可配置的。

您最好的选择是定义一个自定义日志 channel ,该 channel 记录到工作人员的文件并在您的 HTTP 之后推送您的文件。要求。

  • 定义一个基于单个文件或路径的记录器 channel config/logging.php:
    'supervisorLog' => [
    'driver' => 'single',
    'name' => 'supervisor-log',
    // ath should be same as stdout_logfile in supervisord.conf
    'path' => storage_path('path/to/supervisor/log/file'),
    'locking' => false
    ],
  • $result = json_decode($response->getBody()); 之后添加这个在您的 ApiUpdateItemJob.php :
    Log::channel('supervisorLog')->info("Processing item id " + $this->item_id +" (Status ["+ $response->status() +"]): App\Jobs\UpdateItemStatus");

  • 结果将类似于:

    [2019-12-17 05:11:53][40792760] Processing: App\Jobs\UpdateItemStatus

    [2019-12-17 05:11:54][40792761] Processing item id #333333 (Status [200]): App\Jobs\UpdateItemStatus

    [2019-12-17 05:11:54][40792760] Processed: App\Jobs\UpdateItemStatus

    关于php - 如何在 Laravel 中自定义作业的日志输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59423151/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com