可以在GAE上使用Monolog,并在Stack Driver中记录日志记录级别吗?

时间:2020-02-28 00:41:46

标签: php google-app-engine google-cloud-stackdriver monolog

互联网上有许多posts,它们表明在Google App引擎(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:做一个超级 巨大的SELECT获取所有intl。 [] []“”

,并且级别图标始终是点划线的星号。 enter image description here 有什么改变吗?我在GAE标准上使用php 7.3运行时。有没有办法在GAE上使用Monolog,让您正确使用堆栈驱动程序?

2 个答案:

答案 0 :(得分:1)

有一个可用的软件包,可让您将Monolog推送到Stackdriver。

根据文档:

提供的StackdriverHandler将给定的日志级别复制到 Stackdriver的严重性取决于您的日志方法。

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

可在此处找到源代码monolog-stackdriver

答案 1 :(得分:0)

我结束了有条件地在本地加载与在GAE上不同的记录器的工作。这是可行的,但考虑到独白很流行,这似乎是一个不必要的技巧。而且,是2020年。

className

我希望有人可以用独白做这项工作。