【发布时间】:2020-12-19 06:58:34
【问题描述】:
我有flask 服务,我正在尝试在 Logger 中添加一些自定义字段
我推荐了this question
并实现了这个
from flask import Flask, request
from flask_cors import CORS
import logging
import json
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
formatter = """{"name":,%(name)s, "module_name": %(module)s,"pid": %(process)d,"level": %(levelno)d,\
"level_name": %(levelname)s, "msg": %(message)s, "data": %(data_)s, "time": %(asctime)s,\
"src": { "file": %(pathname)s, "line": %(lineno)d }, "function": %(funcName)s}"""
formatter = logging.Formatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(ch)
adapter = logging.LoggerAdapter(logger=logger, extra=dict(data_=0))
app = Flask(__name__)
CORS(app)
@app.route('/home', methods=["GET"])
def home():
adapter.info("OK", extra=dict(data_=0))
return "OK"
@app.route('/user', methods=["POST"])
def user_check():
req_data = json.loads(request.data)
adapter.info("User check request received", extra=dict(data_=23))
return "Check Complete"
if __name__ == "__main__":
app.run('0.0.0.0', debug=True)
每当我点击服务http://127.0.0.1:5000/user 时,我都会收到如下日志
{"name":,__main__, "module_name": app,"pid": 433712,"level": 20,"level_name": INFO, "msg": User check request received, "data": 0, "time": 2020-12-19 12:19:13,782,"src": { "file": app.py, "line": 43 }, "function": user_check}
如果您看到数据没有使用extra 参数中传递的值进行更新,我无法理解为什么它没有更新或
有没有更好的方法将自定义字段添加到 Logger 中?
【问题讨论】: