首页 > 解决方案 > Monolog 可以在 GAE 上使用并且在 Stack Driver 中记录日志级别吗?

问题描述

互联网上有许多帖子表明在谷歌应用引擎(GAE 标准)上使用 Monolog 的正确方法是这样的:

   $logger = new  Monolog\Logger($name);
   $syslogHandler = new \Monolog\Handler\SyslogHandler("Ident_String", LOG_USER, \Monolog\Logger::INFO);
        $syslogHandler->setFormatter(new \Monolog\Formatter\JsonFormatter());
        $logger->pushHandler($syslogHandler);
        break;


    $logger->warn("Starting priam import." );

这确实让我记录下来,但级别隐藏在 textPayload 中:

textPayload:“[2020 年 2 月 28 日 11:00:07] 警告:[pool app] 孩子 22 对 stderr 说:“[2020-02-28 06:00:07] match_old.INFO:对获取所有国际。[] []""

并且级别图标始终是一个星号。 在此处输入图像描述 有什么改变吗?我在 GAE 标准上使用 php 7.3 运行时。有没有办法在 GAE 上使用 Monolog 让您正确使用堆栈驱动程序?

标签: phpgoogle-app-enginegoogle-cloud-stackdrivermonolog

解决方案


有一个包可以让你将 Monolog 推送到 Stackdriver。

根据文档:

提供的 StackdriverHandler 根据您的日志方法将给定的日志级别复制到 Stackdriver 的严重性中。

它还尊重 context 参数,它允许您使用日志消息发送额外的上下文数据。这将存储在 jsonPayload.data 下的日志消息中。

源代码可以在这里找到monolog-stackdriver


推荐阅读