簡體   English   中英

如何在訪問日志中從flask的全局'g'對象添加ID?

[英]How can I add an id from flask's global 'g' object in the access log?

我正在使用gunicorn來運行我的Flask應用。

我在Flask的全局g對象上有一個user_id ,我想登錄每個經過身份驗證的請求。

有人知道這樣做的好方法嗎? 我嘗試添加這樣的自定義過濾器,但執行記錄器時請求似乎不在范圍內:


class MyFilter(logging.Filter):

    def filter(self, record):
        if hasattr(g, 'user_id'):
            record.msg = "User ID: {0} ".format(g.user_id) + record.msg
        return 1

我期待這樣的事情:

2014-11-08 21:52:15 [INFO] REQUESTLOG 127.0.0.1 User ID: 12345 "GET /v1.0/healthcheck HTTP/1.1" 200 51 "-" "curl/7.35.0"

謝謝!

您可以將Werkzeug請求處理程序子類化,並提供您自己的log_request()方法版本。 這是一個例子:

from werkzeug.serving import BaseRequestHandler
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "hi"

class MyRequestHandler(BaseRequestHandler):
    def log_request(self, code='-', size='-'):
        self.log('info', 'custom log! "%s" %s %s', self.requestline, code, size)

if __name__ == '__main__':
    app.run(debug=True, request_handler=MyRequestHandler)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM