11

我有一个在 App Engine Classic 中运行的模块和另一个在 App Engine Flexible 中运行的模块。查看 App Engine Classic 中运行的日志时,日志条目嵌套在每个请求中。

但是,当查看在 App Engine Flexible 中运行的日志时,它们不是嵌套的。每个日志条目似乎都与请求无关。这使得很难确定哪个日志与哪个请求相关联。

是否可以将 App Engine Flexible 中的日志嵌套在每个请求下(就像它们与 App Engine Classic 一样)?

我在文档中找不到任何解释这种差异的内容。

4

4 回答 4

4

正如您可能想象的那样,App Engine Flexible 使用了许多与传统 App Engine 不同的机器,并且这些不同的环境确实以不同的方式记录日志。不幸的是,目前不可能让 Flexible 以与 Classic 相同的数据格式登录。

如果这对您来说足够重要,您始终可以直接通过Cloud Logging API进行日志记录,这是 App Engine 日志记录 API 最终传递到今天的内容。您可以通过查看传统的 App Engine 条目来推断要记录的数据格式,尽管我们已经打开了一个功能请求来更明确地公开记录这一点。

另外,顺便提一下,在 Stackdriver Logging(以前的 Cloud Logging)方面,我们肯定在考虑如何更普遍地支持这种日志数据的非规范化,而不仅仅是 App Engine 日志记录的特殊情况。格式,因为这将是广泛有用的功能。然而,我们目前没有任何具体的计划或时间表可以分享——只是注意到这是我们的雷达。

于 2016-04-28T17:39:35.403 回答
3

您现在可以按照以下说明编写与 App Engine Standard 类似的嵌套应用程序日志:https ://cloud.google.com/logging/docs/view/service/appengine-logs#linking_application_logs_and_requests

于 2018-02-28T19:14:00.363 回答
0

I had an exact problem just like yours. My application was running on the Django framework, So I created middleware to manage logs nesting and started logging via Google Cloud Logging API using "google-cloud-logging" library.

Google Cloud Loggin API documentation does not have a good document on this.

While creating a log you need to add "TRACE" This trace should be pointing to its parent log.

I was able to achieve the following results: enter image description here

Please check my step by step blog on implementing this solution here

Please check the repository source code here on Github.

于 2020-05-18T11:56:45.160 回答
0

Marc Unangst 将应用程序日志和请求链接起来的建议听起来很棒,不幸的是,关于如何实现这一点的文档不是很清楚 ( https://cloud.google.com/appengine/articles/logging#linking_app_logs_and_requests )。

使用 Google Cloud Client Libraries for Python ( https://google-cloud-python.readthedocs.io/en/latest/logging/handlers-app-engine.html )中的“Google App Engine 灵活日志处理程序”能够登录到“应用程序”日志,该日志是应用引擎灵活应用程序本身的日志堆栈的一部分。因此,我目前与主题启动者处于同一条船上。

我注意到,根据日志链接的要求,resource.labelsresource.type属性会以这种方式自动正确设置。但是,trace缺少信息,似乎缺少有关如何包含此信息的说明。

接下来,时间似乎也总是关闭。说明要求timestamp应用程序日志条目位于parent.timestamp - parent.httpRequest.latency相应 HTTP 请求之间。我注意到我的应用日志条目的时间戳总是稍晚timestamp于相应请求的时间戳。这很奇怪,因为这些条目是在请求期间进行的。

对我来说,目前看起来日志处理程序在编写日志条目时不知道正在进行的 HTTP 请求周期(我在 Django 中使用它),因此缺少traceid?不确定如何从这里继续,喜欢听听其他人可能取得的成就。

于 2018-06-03T16:29:20.083 回答