Flask 日志未显示在 GCP 日志查看器中
Flask logs not showing up in GCP log viewer
我开发了一个简单的 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):]))
注意:有一个更强大的替代方法:记录器构造的过滤选项。
我开发了一个简单的 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):]))
注意:有一个更强大的替代方法:记录器构造的过滤选项。