谷歌云对焦格式化器
flask-google-cloud-logger的Python项目详细描述
flask_google_cloud_logger
flask扩展,根据google cloud v2规范格式化日志
根据v2 specification使用python-json-logger格式化程序,google cloud的python日志格式化程序
由灵药logger_json
激发安装
pipenv
pipenv install flask_google_cloud_logger
PIP
pip install flask_google_cloud_logger
用法
importloggingfromloggingimportconfigfromflaskimportFlask,request,gfromflask_google_cloud_loggerimportFlaskGoogleCloudLoggerLOG_CONFIG={"version":1,"formatters":{"json":{"()":"flask_google_cloud_logger.FlaskGoogleCloudFormatter","application_info":{"type":"python-application","application_name":"Example Application"},"format":"[%(asctime)s] %(levelname)s in %(module)s: %(message)s"}},"handlers":{"json":{"class":"logging.StreamHandler","formatter":"json"}},"loggers":{"root":{"level":"INFO","handlers":["json"]},"werkzeug":{"level":"WARN",# Disable werkzeug hardcoded logger"handlers":["json"]}}}config.dictConfig(LOG_CONFIG)# load log config from dictlogger=logging.getLogger("root")# get root logger instanceapp=Flask("test_app")FlaskGoogleCloudLogger(app)@app.route("/")defhello_world():return"Hello, World!"@app.teardown_request#log request and response info after extension's callbacksdeflog_request_time(_exception):logger.info(f"{request.method}{request.path} - Sent {g.response.status_code}"+" in {g.request_time:.5f}ms")
示例输出:
{"timestamp":"2018-11-04T22:07:42.687000Z","severity":"INFO","message":"GET / - Sent 200 in {g.request_time:.5f}ms","labels":{"type":"python-application","application_name":"Example Application","client":{"user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36","ip":"127.0.0.1","version":null},"connection":{"method":"GET","path":"/","request_id":"afc4c6d5-5f30-4f02-b66a-e97e87841073","status":200},"latency":0.13828277587890625},"metadata":{"userLabels":{}},"sourceLocation":{"file":"test_app.py","line":52,"function":"log_request_time"}}
学分
谢谢@thulio,@robsonpeixoto,@ramondelemos