微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask 日志未显示在 GCP 日志查看器中

如何解决Flask 日志未显示在 GCP 日志查看器中

我开发了一个简单的 Flask Web 应用程序并将其部署到 GCP 计算引擎。使用 gunicorn 我可以运行该程序并且它可以工作。我按照本指南 https://cloud.google.com/logging/docs/setup/python 设置日志记录。

import google.cloud.logging
import logging

client = google.cloud.logging.Client()

client.setup_logging()

logging.info('PROGRAM STARTED') 

我的应用中的这段代码似乎可以正常工作。我在日志查看器中看到“程序已启动”日志。我的问题是我找不到来自烧瓶的任何日志,例如 http 请求或错误。我试图了解这是如何工作的,因为我对 GCP 和日志记录实践都不熟悉。任何提示提示?提前致谢!

解决方法

你是同时做这两件事吗?如果您想使用 python 的内置日志记录,那么只需

import logging

创建一个记录器,为其部署到的每个 Python 模块命名,使用

logger = logging.getLogger(__name__)

并使用它(最少)

logger.info('my log entry')

文档中有很多关于此的配置、过滤等。 我无法评论 Google 记录器,但他们确实说使用它或常规的 Python 记录器。

以下是如何捕获所有或(更可能是选择)flask 的 http 交互(尽管可能比您需要的更复杂)的示例:

@app.before_request
def log_request_info():
    if current_user.is_authenticated:
        if not current_user.is_superuser and \
                not any([(term in str(request)) for term in ['static','favicon','images']]):
            app.logger.info('%s,%s' % (
                str(current_user),request.url[len(request.url_root):][:50]))
    else:
        if not any([(term in str(request)) for term in ['api','static','favicon']]):
            app.logger.info('unauthorised: %s' % (request.url[len(request.url_root):]))

注意:还有一个更强大的替代方法:记录器构造的过滤选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。