【问题标题】:How to log custom data in flask service using python Logger如何使用 python Logger 在烧瓶服务中记录自定义数据
【发布时间】: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 中?

【问题讨论】:

    标签: python flask logging


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2020-08-16
    • 2012-08-09
    • 2021-05-20
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多