1

所以我有这个,Kernel.php $schedule->command('command:name')->hourly()->withoutOverlapping();但它从不将日志存储在 Cloudwatch 中。但是,如果我使用 手动运行它vapor command staging --command="php artisan command:name",它们确实会存储在 Cloudwatch 中。

我假设它与 Laravel Vapor 中基于 cron 的命令有关,将它们的输出存储到,/dev/null但我可能错了。我的目标是捕获这些日志,有什么帮助吗?进一步补充,我的命令基本上从 API 中获取 50 条记录的数据。

4

2 回答 2

2

这是来自官方 Laravel Vapor 文档:

记录消息

由于 Vapor 限制,来自计划任务的日志消息不会出现在 AWS CloudWatch 或 Vapor UI 中。作为一种解决方法,您应该从您的计划任务中分派一个排队的作业,并从您的排队作业中写入日志消息。

当您执行时,vapor command staging --command="php artisan command:name您正在使用 CLI。此模式会生成日志,这就是您可以看到它们的原因。

于 2021-05-11T13:39:25.743 回答
-1

通过在屏幕输出和日志文件之间建立符号链接解决了这个问题。感谢@koalaok。在这里查看他的回答https://stackoverflow.com/a/46767123/4296706

ln -sf /proc/1/fd/1 /var/log/laravel-scheduler.log

在我的Kernel.php

$filePath = '/var/log/laravel-scheduler.log';;
$schedule->command('my sample command')->daily()->appendOutputTo($filePath);
于 2021-10-29T06:52:26.253 回答