Python Flask 日志记录处理程序,用于在 Google Cloud Platform 上对消息进行分组
项目描述
Flask 扩展,允许在请求处理程序中发出的日志行一起显示/渲染。
通常,当使用 Google Cloud Logging 库(google-cloud-logging和CloudLoggingHander)时,发出的每个日志条目都会在 Logging UI 中单独显示。但是,希望将逻辑上属于 HTTP 请求中的所有日志组合在一起。对于到 FLask 的给定 HTTP 请求,此扩展在父请求下方“一起”显示所有日志。
如在
配置参数
GCPHandler
应用程序:烧瓶处理程序
parentLogName : 'request' 的 parentLogger 名称(默认值:request')
childLogName : '应用程序日志的 childLogger 名称(默认值:“应用程序”)
traceHeaderName:要解析为跟踪标头的标头名称。(在 GCP 上,它的X-Cloud-Trace-Context)
标签:标签字典应用于所有日志(默认=无),
resource:要记录的 Cloud Logging 资源(默认值='global')
from flask import Flask
import logging, json
from flask_gcp_log_groups import GCPHandler
app = Flask(__name__)
g = GCPHandler(app, parentLogName="request",
childLogName="application",
traceHeaderName='X-Cloud-Trace-Context',
labels= {'foo': 'bar', 'baz': 'qux'},
resource= {
"type": "gce_instance",
"labels": { "instance_id": "5160310737730769780",
"zone": "us-central1-a"
}
})
g.setLevel(logging.INFO)
app.logger.addHandler(g)
@app.route('/')
def default():
app.logger.setLevel(logging.INFO)
app.logger.info("I met a traveller from an antique land,")
return 'ok'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=False)
仅带有痕迹
curl -v -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36" \ -H "X-Cloud-Trace-Context: `python -c "import uuid; print uuid.uuid4()"`" \ http://localhost:8080/