【发布时间】:2020-11-07 07:36:37
【问题描述】:
我无法使用 Log 外观从 Job 的 handle 方法记录任何内容。使用此外观从控制器或应用程序的其他部分进行日志记录工作正常。
我在这里尝试了解决方案:Logging not working in laravel queue job,但它不适用于 Laravel 6.17,在这里:https://stackoverflow.com/a/55206727/10767428,但它不会以任何方式影响行为。
- PHP 7.2
- Laravel 6.17
APP_ENV=localAPP_LOG_LEVEL=debug- Laravel 在 Docker 中运行,使用 Alpine 映像和其他不相关的东西
这是我的工作:
class MyJob implements ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
use SerializesModels;
public function handle()
{
Log::warning("HI");
}
}
当我发送 if 时,作业得到了正确处理,但我的 storage/app/logs/laravel.log 中没有显示任何内容。
这个文件和整个文件夹storage有777个权限。
我在config/logging.php 中使用“单一”驱动程序:
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
有什么想法吗?
编辑 2020 年 7 月 17 日
根据要求,这是我的config.horizon.php:
编辑 07/20/2020
当我使用dipatchNow 方法而不是dispatch 调用它时,我可以从同一个作业登录。任何想法为什么?
【问题讨论】:
-
你是如何初始化worker的?
-
我不知道你的 docker 镜像,你试过 docker logs
许多 docker 镜像将默认日志文件重定向到 stderr ......所以也许,不相关的东西可能是相关的 -
如果你已经以 php artisan queue:work 运行 worker,如果你修改了配置,它需要重新启动。您使用的是什么队列连接(驱动程序)?
-
我在这里和@DannyEbbers 在一起,我认为这是一个 docker 配置问题。我会检查以确保您使用 app/storage 作为容器的共享卷。
-
谢谢你们@DannyEbbers、Kurt Friars 和 N69S,让我试试你们的建议,如果我得到结果我会告诉你们的。我使用 Horizon 让 worker 运行,所以我使用
php artisan horizon启动 worker。我认为 Horizon 负责重新启动工作人员,但我会尝试手动重新启动它。队列连接为redis和rabbitmq,具体取决于作业。但他们都没有记录任何东西。
标签: php laravel permissions