我开发了一个简单的 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 和日志记录实践都不熟悉。任何提示或提示?提前致谢!
答案 0 :(得分:1)
你是同时做这两件事吗?如果您想使用 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):]))
注意:还有一个更强大的替代方法:记录器构造的过滤选项。