每次作业的单独日志文件 运行 laravel
Separate log files for each time a job is run laravel
我有一个 Laravel 8 应用程序,其中我 运行 针对特定帐户的工作。对于每个帐户,我需要一个单独的日志文件,格式如“logFileName_122323123_2021-01-01”(logFileName__)等等。
类似问题how to customize file name of log in Laravel 8.0?
但这并不能帮助我每次 运行 作业时创建一个新文件。
我在作业构造函数中进行了尝试,但由于我是静态调用日志,因此它不会保留其值。
Config::set(['logging.channels.processPbsNormalCampaignJob.path' => storage_path('logs/processPbsNormalCampaignJob_'.$this->accountId.'_' . date('Y-m-d') . '.log')]);
最好的方法是什么?
从Laravel开始还有v8.66.0 you can create a log channel on the fly. You can check the PR as Docs
所以基于文档你可以做
Illuminate\Support\Facades\Log::build([
'driver' => 'daily',
'path' => storage_path('logs/processPbsNormalCampaignJob_' . $this->accountId . '_' . date('Y-m-d') . '.log'),
])->info('Your Log data here !!');
ManojKi运行 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,
],
这一切要做的是动态更改频道名称。现在,由于我们为每个作业提供了不同的渠道,因此我们可以轻松地为每个作业创建单独的日志,即使它们是 运行 来自单个命令。
我有一个 Laravel 8 应用程序,其中我 运行 针对特定帐户的工作。对于每个帐户,我需要一个单独的日志文件,格式如“logFileName_122323123_2021-01-01”(logFileName__)等等。
类似问题how to customize file name of log in Laravel 8.0? 但这并不能帮助我每次 运行 作业时创建一个新文件。
我在作业构造函数中进行了尝试,但由于我是静态调用日志,因此它不会保留其值。
Config::set(['logging.channels.processPbsNormalCampaignJob.path' => storage_path('logs/processPbsNormalCampaignJob_'.$this->accountId.'_' . date('Y-m-d') . '.log')]);
最好的方法是什么?
从Laravel开始还有v8.66.0 you can create a log channel on the fly. You can check the PR as Docs
所以基于文档你可以做
Illuminate\Support\Facades\Log::build([
'driver' => 'daily',
'path' => storage_path('logs/processPbsNormalCampaignJob_' . $this->accountId . '_' . date('Y-m-d') . '.log'),
])->info('Your Log data here !!');
ManojKi运行 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,
],
这一切要做的是动态更改频道名称。现在,由于我们为每个作业提供了不同的渠道,因此我们可以轻松地为每个作业创建单独的日志,即使它们是 运行 来自单个命令。