2014-06-16 130 views
1

我正在關注Flask's documentation on how to configure logging。然而,它似乎並沒有寫入記錄,除非我明確告訴它(和文檔似乎都同意。)自動將瓶子的消息記錄到記錄器

這是我如何配置我的記錄器,內create_app()

def create_app(environment): 
    """ creates the flask application. Uses a parameter to choose which config to use """ 
    app = Flask(__name__) 
    # ... 

    error_handler = RotatingFileHandler(
    os.path.join(app.config['LOG_FOLDER'], 'flask.log'), 
    maxBytes=100000, 
    backupCount=1 
) 
    error_handler.setLevel(logging.NOTSET) 
    error_handler.setFormatter(Formatter(
    '%(asctime)s %(levelname)s: %(message)s' 
    '[in %(pathname)s:%(lineno)d]' 
)) 
    app.logger.addHandler(error_handler) 

現在我希望它在發生錯誤時就像在調試器中一樣,將追蹤放入日誌中。這是可能的,而生產?

回答

3

要做到這一點,最簡單的方法是用teardown_request註冊錯誤處理程序:

@app.teardown_request 
def log_errors(error): 
    if error is None: 
     return 

    app.logger.error("An error occurred while handling the request", error) 
+0

好像你回答了我所有的瓶的問題,但是這是一個簡單而優雅的解決方案,謝謝 – corvid