【问题标题】: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 请求任务的日志时,我没有看到任何内容。

【问题讨论】:

    标签: google-app-engine google-cloud-platform stackdriver google-cloud-tasks


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

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

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 2021-08-24
      • 2017-12-05
      • 2020-12-04
      • 2021-05-15
      • 1970-01-01
      • 2021-03-16
      • 2021-11-15
      • 2021-06-16
      相关资源
      最近更新 更多