【问题标题】:Why do logs that are run by schedule:run on Laravel Vapor not saving in Cloudwatch?为什么按计划运行的日志:在 Laravel Vapor 上运行而不保存在 Cloudwatch 中?
【发布时间】:2021-10-29 14:52:26
【问题描述】:

所以我在我的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 条记录的数据。

【问题讨论】:

    标签: laravel amazon-cloudwatch laravel-vapor


    【解决方案1】:

    这是来自官方 Laravel Vapor 文档:

    记录消息

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

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

    【讨论】:

    • 有什么想法可以解决这个问题吗?
    【解决方案2】:

    通过在屏幕输出和日志文件之间建立符号链接解决了这个问题。感谢@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);
    

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      相关资源
      最近更新 更多