互联网上有许多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。 [] []“”
,并且级别图标始终是点划线的星号。
有什么改变吗?我在GAE标准上使用php 7.3运行时。有没有办法在GAE上使用Monolog,让您正确使用堆栈驱动程序?
答案 0 :(得分:1)
有一个可用的软件包,可让您将Monolog推送到Stackdriver。
根据文档:
提供的StackdriverHandler将给定的日志级别复制到 Stackdriver的严重性取决于您的日志方法。
它也尊重context参数,它允许您发送额外的 与您的日志消息相关的上下文数据。这将存储在日志中 jsonPayload.data下的消息。
可在此处找到源代码monolog-stackdriver
答案 1 :(得分:0)
我结束了有条件地在本地加载与在GAE上不同的记录器的工作。这是可行的,但考虑到独白很流行,这似乎是一个不必要的技巧。而且,是2020年。
className
我希望有人可以用独白做这项工作。