1. 程式人生 > >【Flask】在Flask中使用logger

【Flask】在Flask中使用logger

Flask在0.3版本後就有了日誌工具logger,在Flask的官方文件中這麼記載:

有時候可能會遇到資料出錯需要糾正的情況。例如因為使用者篡改了資料或客戶端程式碼出錯 而導致一個客戶端程式碼向伺服器傳送了明顯錯誤的 HTTP 請求。多數時候在類似情況下 返回 400 Bad Request 就沒事了,但也有不會返回的時候,而程式碼還得繼續執行 下去。

這時候就需要使用日誌來記錄這些不正常的東西了。自從 Flask 0.3 後就已經為你配置好 了一個日誌工具。

app.logger.debug('A value for debugging')
app.logger.warning('A warning occurred (%d apples)'
, 42) app.logger.error('An error occurred')

可是我用Flask開發大型專案,重新組織了Flask的檔案結構。

# app.__init__.py
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    # 省略...

    return app
# manage.py
app = create_app(os.getenv('FLASK_CONFIG'
) or 'default')

想使用app.logger,但是無論是用from manage import app還是from app import app都會出現ImportError錯誤,後來詢問了知乎上的一位大神,他建議使用flask的current_app,即:

from flask import current_app

current_app.logger.debug('A value for debugging')
current_app.logger.warning('A warning occurred (%d apples)', 42)
current_app.logger.error
('An error occurred')

這樣就可以在藍圖的檢視函式裡使用logger了。