[英]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.