?? python 在log中添加自定義字段

在平時開發(fā)中,會經(jīng)常使用logging模塊輸出一些信息,logging 模塊內(nèi)容了一些字段如: 行號,日志級別,時間,文件名,行號等等,可是我們有時候可能需要自己添加一些字段來進(jìn)行標(biāo)識如 request_id 而這些自定義字段是不能直接使用的,那如何實現(xiàn)呢?這時候我們就需要自定義 Handler來實現(xiàn)這個目標(biāo)。

import logging


def _get_request_id():
   # 利用它來生成request_id
    import flask_request_id
    return flask_request_id.id


def get_logger():
   # request_id 就是我們自己定義的新字段
    format_str = '[%(asctime)s_%(levelname)s]_[%(filename)s:%(lineno)d]_[%(request_id)s]: %(message)s'
    # request_id 的值就是從這個 extra 值中動態(tài)獲取的
    extra = {"request_id": _get_request_id()}
    loger = logging.getLogger(__name__)
    stream = logging.StreamHandler()
    format_ = logging.Formatter(format_str)
    stream.setFormatter(format_)
    loger.setLevel(logging.INFO)
    loger.addHandler(stream)
    loger = logging.LoggerAdapter(loger, extra)
    return loger

為了使用方便我們可以將 request_id 放在flask的全局對象g中,這樣我們就可以在在請求的任何地方使用了。

from flask_request_id import RequestID
@app.before_request
def before_request():
    # add  request_id  into global g object
    g.request_id = flask_request_id.id

??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容