通过 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 中。
通过更改 php-fpm 设置中的 2 个值解决了该问题,如下所述:
catch_workers_output = yes
decorate_workers_output = no
感谢以下2个帖子:
更新“php-fpm.c/www.conf”文件中的上述设置后,我们能够获取调试日志。