如何使用python Logger在flask服务中记录自定义数据

如何使用python Logger在flask服务中记录自定义数据,python,flask,logging,Python,Flask,Logging,我有flask服务,我正在尝试在Logger中添加一些自定义字段 我提到 并实施了这一计划 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 = &quo

我有
flask
服务,我正在尝试在Logger中添加一些自定义字段

我提到

并实施了这一计划

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”:,{u main},“module_name”:app,“pid”:433712,“level”:20,“level_name”:INFO,“msg”:收到用户检查请求,“data”:0,“time”:2020-12-19 12:19:13782,“src”:{“file”:app.py,“line”:43},“function”:User_check}

如果您看到数据没有使用
extra
参数中传递的值进行更新,我无法理解它为什么没有更新或更新


是否有更好的方法将自定义字段添加到记录器中?

似乎可以使用
Logger.info()
而不是
adapter.info()
似乎可以使用
Logger.info()
而不是
adapter.info()

不,它没有附加屏幕截图。注释掉了
req\u data=json.loads(request.data)
。不,它没有附加屏幕截图。注释掉
req\u data=json.loads(request.data)