[英]Separate log files for each time a job is run laravel
我有一個 Laravel 8 應用程序,我可以在其中針對特定帳戶運行我的作業。 對於每個帳戶,我需要一個單獨的日志文件,格式為“logFileName_122323123_2021-01-01”(logFileName__) 等。
類似問題如何在Laravel 8.0 中自定義日志文件名? 但這並不能幫助我每次運行作業時創建一個新文件。
我在我的工作構造函數中嘗試過,但由於我靜態調用 Log,它不保留其值。
Config::set(['logging.channels.processPbsNormalCampaignJob.path' => storage_path('logs/processPbsNormalCampaignJob_'.$this->accountId.'_' . date('Y-m-d') . '.log')]);
最好的方法是什么?
ManojKiran Appathurai 發布的答案是正確的,但是當我從同一個命令運行兩個作業時遇到了問題。 意想不到的結果是,一旦我建立了日志,我就無法重建它。
我現在所做的是:
創建這個輔助函數
public function initializeLogger($fileName, $channel)
{
$path = 'logs/'.$fileName.'.log';
config(['logging.channels.googlelog.path' => storage_path($path)]);
return Log::channel($channel);
}
然后,您可以創建特定於作業的新頻道名稱,例如
'importAccountEntitiesJob' => [
'driver' => 'daily',
'path' => storage_path('logs/importAccountEntitiesJob.log'),
'level' => 'debug',
'days' => 0,
],
所有這一切要做的是動態更改頻道的名稱。 現在,由於每個作業都有不同的通道,我們可以輕松地為每個作業創建單獨的日志,即使它們是通過單個命令運行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.