如何禁用 Laravel 调度程序日志

How to disable Laravel scheduler logs

我正在将所有 docker 日志重定向到 google stackdriver,但是当我将某些内容重定向到 /dev/null 时,我预计在 stackdriver 中看不到它。

这是我目前的/etc/docker/daemon.json内容:

{"live-restore": true,"storage-driver": "overlay2","log-driver":"gcplogs"}

这是我要启动的主管程序 horizon:

[program:horizon]
command = php /var/www/artisan horizon
stdout_logfile = /dev/null
stdout_logfile_maxbytes = 0
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes = 0
user = root
autostart = true
autorestart = true
priority = 3000

这就是我调用调度程序的方式:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

但他们仍然发送到 stackdriver

如何禁用此调度程序日志? (只有他们,没有其他有用的日志)

[编辑]

日志级别不会更改正在处理的作业的输出。有一个要求 https://github.com/laravel/ideas/issues/1516

您指的是不同的应用程序执行不同的日志记录。

  1. 您发送到 gcplogs 的 docker 日志配置
  2. 您发送给 /dev/null
  3. 的主管日志配置
  4. 您要发送给 /dev/null
  5. 的应用程序调度程序

但是你缺少的是第四个;

  1. laravel 应用程序...

当您 运行 在单独的 .env 文件中设置命令行调度程序时,最好的选择是覆盖 LOG_CHANNEL 的环境设置。

您可以创建 .env 的副本,例如 .env.scheduler 并将 LOG_CHANNEL 更新为 none 并在 [=] 中配置 none 17=] 文件到这样的东西(未经测试):

    'none' => [
        'driver' => 'none',
        'via' =>     \Monolog\Handler\NullHandler:class,
    ],

然后将您的调度程序更新为 运行:

* * * * * cd /path-to-your-project && php artisan schedule:run --env=scheduler >> /dev/null 2>&1

希望对您有所帮助。

所提供的打印屏幕的日志是由 Laravel horizon 而不是我想的那样是由调度员和主管制作的。要抑制 horizon 日志,需要使用 --quiet 标志启动。