问题场景:
crontab运行php artisan脚本产生的日志文件和laravel接口产生的文件都是laravel.log,由于用户所属不同的原因,如果是crontab先运行,则laravel.log的归属用户为root;而laravel接口先运行,则laravel.log的归属用户为www-data,root大于www-data,所以crnotab先运行,则接口无权限再写日志。为解决这种日志权限问题,让crontab运行的脚本使用其他日志文件则非常有必要;
解决方案:
1,自建日志通道
'daily_cli' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel_cli.log'),
'level' => 'debug',
'days' => 7,
],
2,代码中使用
Log::channel('daily_cli')->info('【订单脚本】处理拼团活动订单脚本开始');
结果:
这样crontab中产生的日志为laravel_cli.log,laravel接口产生的日志为laravel.log,再无权限混淆问题;
注意:
daily驱动产生的日志文件名会带日期,如果不需要用single即可