使用python

时间:2019-05-14 14:52:25

标签: python-3.x google-app-engine stackdriver google-app-engine-python google-cloud-stackdriver

我想从我的应用程序引擎标准python3应用程序向Stackdriver Logging发送更多富有表现力的日志条目。 通过遵循official documentation,我可以将日志发送到stackdriver,并且似乎时间戳已正确解析。

但是我缺少严重性级别。另外,我看不到将某个请求的日志链接到操作的任何方法。 Java日志记录似乎开箱即用。

供参考,这是我的代码:

import logging
import os

from flask import Flask
from google.cloud import logging as glog

app = Flask(__name__)
log_client = glog.Client(os.getenv('GOOGLE_CLOUD_PROJECT'))
# Attaches a Google Stackdriver logging handler to the root logger
log_client.setup_logging()


@app.route('/_ah/push-handlers/cloudbuild', methods=['POST'])
def pubsub_push_handle():

    logging.info("stdlib info")
    logging.warning("stdlib warn")
    logging.error("stdlib error")

记录生成堆栈驱动程序的日志:

logs in stackdriver

如您所见,时间戳和消息可用,而严重程度却奇怪地丢失了,并且被归类为“任何”

有人可以向我指出正确的方向吗?或者这种合并级别尚不可用?

感谢您的时间! 卡斯滕

1 个答案:

答案 0 :(得分:5)

您需要创建自己的记录器,并向其中添加google-cloud-logging默认处理程序:

import logging

from flask import Flask
from google.cloud import logging as cloudlogging

log_client = cloudlogging.Client()
log_handler = log_client.get_default_handler()
cloud_logger = logging.getLogger("cloudLogger")
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(log_handler)

app = Flask(__name__)

@app.route('/_ah/push-handlers/cloudbuild', methods=['POST'])
def pubsub_push_handle():
    cloud_logger.info("info")
    cloud_logger.warning("warn")
    cloud_logger.error("error")
    return 'OK'

产生:

enter image description here