将 Symfony 从 v2.8 更新到 v6.4 时没有出现调试日志

问题描述 投票:0回答:1

通过 PHP8 升级将 Symfony 从 v2.8 更新到 v6.4 时没有出现调试日志。

我们已将应用程序从 Symfony v2.8 更新到 v6.4,并将 PHP 从 v7.4 升级到 v8.1。我们已经使用了新的框架,并对所有代码进行了相关更改,并且我们已经能够启动该应用程序。但我们面临着调试日志的问题。我们的应用程序托管在 RedHat Openshift 中,我们将日志发送到 stdout/stderr,而不是在 openshift pod 中的日志下可见的文件。

Symfony v2.8 在 config.yml 中有以下设置来使用 Monolog:

monolog:
    channels: ['mm']
    handlers:
        main:
            type:  stream
            path:  "php://stdout"
            level: info
            formatter: mm_logger.formatter
        mm:
            type:  stream
            path:  "php://stdout"
            level: debug
            channels: mm
            formatter: mm_logger.formatter

Symfony v6.4 中的相同设置已更改为 config/packages 文件夹中的 monolog.yaml。 monolog 详细信息以“ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true] ”的形式添加到 config 文件夹内的 bundles.php 中。但在 symfony v6.4 中,日志不会出现在 pod 中。

请注意,当我更改为本地旋转文件时,日志以正确的格式正常显示,但是当更改为服务器中的“php://stdout”时,它们不会出现。

版本为Symfony v6.4、PHP v8.1、Monolog v3.7.0

随着 php 版本的更改也可能出现问题,但不确定还需要更改哪些内容才能查看 Pod 中的日志,可能是某些 php-fpm 路径或我缺少的其他内容?

Symfony v6 或 PHP8 中的设置是否有任何可能导致问题的更改,或者需要进行一些配置更改? 任何帮助都非常感激。

我尝试更改设置并期望调试日志出现在 Openshift Pod 中。

symfony monolog symfony6 php-8.1
1个回答
0
投票

通过更改 php-fpm 设置中的 2 个值解决了该问题,如下所述:

catch_workers_output = yes
decorate_workers_output = no

感谢以下2个帖子:

  1. https://symfony.com/blog/logging-in-symfony-and-the-cloud
  2. https://dev.to/mtk3d/how-to-configure-php-logs-for-docker-2384

更新“php-fpm.c/www.conf”文件中的上述设置后,我们能够获取调试日志。

© www.soinside.com 2019 - 2024. All rights reserved.