2017-03-02 72 views
1

有這樣幾個類似的問題,我已經紅了他們,但不知何故我不能讓我的gunicorn日誌文件顯示所有我感興趣的信息:燒瓶:不能得到gunicorn記錄所有文件

因此,考慮到這3名相關的文件:

run.py

from app import app 


if __name__ == '__main__': 
    app.run(
     passthrough_errors=False, 
     threaded=True 
    ) 

應用/ __ init__.py

import logging 
from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config.from_object('config') 

handler = logging.StreamHandler() 
handler.setLevel(logging.INFO) 

app.logger.addHandler(handler) 
app.logger.level = logging.DEBUG 
app.logger.handlers.extend(logging.getLogger("gunicorn.info").handlers) 

db = SQLAlchemy(app) 

import views, models 

views.py

@app.before_request 
def before_request(): 
    app.logger.info('Body: %s', request.get_data()) 
    ... 
    ... 

命令來運行應用程序:

gunicorn -w 4 run:app --access-logfile /Users/adimian/bla.log \ 
--log-file /Users/mondrian/bla.log --error-log /Users/mondrian/error.log 

問題:請求的身體沒有去任何日誌文件,而是它印在控制檯中。一切都去正確的文件,但不是正文...

我也沒有興趣提供一個日誌文件路徑在配置,而是它應該通過將它作爲命令行參數傳遞給gunicorn,根據我上面的例子。

回答

0

您是否檢查處理程序是否真的是空的? Gunicorn的記錄器是gunicorn.error,而不是gunicorn.info。我在我的應用程序中做類似的事情:

import logging 
from flask import Flask 

app = Flask(__name__) 

root = logging.getLogger() 
root.handlers = logging.getLogger('gunicorn.error').handlers 
root.setLevel(logging.INFO) 
... 

這對我很好,所有日誌記錄都會發送到gunicorn錯誤日誌。