I see that Laravel uses the Monolog library to handle logs. I have the following handle method in the job:
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());
}
In the worker's log (supervisor) I see the following:
[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
What should I add to the job to see the following line:
[2019-12-17 05:11:54][40792762] Processing item id #333333 (Status [200 OK]): App\Jobs\UpdateItemStatus
The log you see in the worker's log file is outputted by Laravel and and it is not configurable.
Your best option is to define a custom log channel which logs to the worker's file and push your after your HTTP
request.
Define a single file or path based logger 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
],
Add this after $result = json_decode($response->getBody());
in your ApiUpdateItemJob.php
:
Log::channel('supervisorLog')->info("Processing item id " + $this->item_id +" (Status ["+ $response->status() +"]): App\Jobs\UpdateItemStatus");
The result will be something like:
[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