没有可用于谷歌云任务的日志?

Posted

技术标签:

【中文标题】没有可用于谷歌云任务的日志?【英文标题】:No logs available for google cloud tasks? 【发布时间】:2020-03-14 02:52:12 【问题描述】:

我在 Google App Engine 中设置了一个非常基本的 Flask 应用:

from flask import Flask
app = Flask(__name__)

@app.route("/<id>")
def hello(id):
    print("Got this id: ".format(id))
    return "Hello World: ".format(id)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080, debug=True)

我已通过在终端中运行以下命令启用日志记录:gcloud beta tasks queues update [QUEUE_ID] --log-sampling-ratio=1.0

我故意通过向我的 Flask 端点添加 POST 请求来触发错误。我在队列中看到这个任务重试了很多次,但是当我点击日志时,我看到了这个(任务名称和队列名称故意为这个屏幕截图修改):

我期待看到我从gcloud app logs read 得到的错误,即: 2019-11-18 16:27:59 default[20191118t002408] "POST /example_task_handler" 405

我做错了什么?

更新:我确实在 Google App Engine 日志中看到了我正在寻找的日志,但是当我单击单个失败的 POST 请求任务的日志时,我没有看到任何内容。

【问题讨论】:

【参考方案1】:
    您是否将您的队列名称(“my-queue-name”)分入gcloud beta tasks queues update [QUEUE_ID] --log-sampling-ratio=1.0 中的 [QUEUE_ID] 中? 在任务控制台中,您是否看到有人尝试过? 您是否尝试加载较旧或较新的日志? 您是否正在为您的任务使用 App Engine 目标?

查找日志的另一种方法是使用 Stackdriver 中的 Cloud Tasks Queue 选择器。

【讨论】:

是的!我为我的特定队列运行它,我确实在任务控制台中看到了我所有调用的条目。我尝试加载旧的和新的,并且我正在为我的任务使用应用程序引擎目标(确实存在)。我看到我尝试的 POST 请求通过多次重试(如预期的那样)留在任务控制台中,并且 GET 请求立即工作(也如预期的那样)。只是日志似乎不起作用。 更新:我确实在 GAE 日志中看到了我正在寻找的日志,但是当我单击单个失败的 POST 请求任务的日志时,我没有看到任何内容(添加此我的问题描述也是如此) 当我尝试重新创建它时,在load older logs 之后,记录器确实需要 5-20 秒才能扫描日志。您还在创建任务之前启用了日志记录吗? 我还用另一种查看日志的方式更新了我的答案。【参考方案2】:

事实证明,这个问题是双重的。

    我需要使用pythonlogging库,所以我切换到logging.info('Got this id: '.format(id)) python 的默认日志记录是警告或更高,所以我需要指定它应该打印所有内容,我这样做了:
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)

(这是有效的,因为 DEBUG 是最低的日志记录级别)。

【讨论】:

以上是关于没有可用于谷歌云任务的日志?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云跟踪 + Gcloud 登录日志查看器

谷歌云消息不返回规范 ID

谷歌云日志的日志格式

谷歌云平台默认队列暂停本身

如何阻止谷歌云 sql 损坏数据库表

如何在谷歌云存储中启用实时对象访问分析?