2015-07-26 3 views
3

Я использую сервер флагов, и я хочу регистрировать каждый запрос данных и заголовок (поэтому я могу использовать его для тестирования моего сервера). я взял WERKZEUG регистратор сКак я могу регистрировать запрос POST body в Flask?

self._app.log = logging.getLogger('werkzeug') 
    self._app.log.addHandler(RotatingFileHandler('log.txt', mode='w')) 
    self._app.log.setLevel(logging.DEBUG) 

Но я не понимаю, как изменить формат журнала для включения request.data и request.headers, все у меня есть журнал по умолчанию

127.0.0.1 - - [17/Feb/2015 17:09:43] "POST /helloworld HTTP/1.1" 200 - 
+0

Флакон включает в себя настройку регистрации; 'app.logger' предоставляет предварительно настроенный журнал регистрации. –

ответ

12

Вы можете войти дополнительная информация для каждого запроса с крюком Flask.before_request:

@app.before_request 
def log_request_info(): 
    app.logger.debug('Headers: %s', request.headers) 
    app.logger.debug('Body: %s', request.get_data()) 
1

Как насчет создания небольшого вспомогательного метода, который вы вызываете в каждом контроллере вашего фляжного приложения.

Вспомогательный метод будет что-то вроде этого:

def log_my_request_data(request_data): 
    #this method will log this data 

, а затем во всех контроллерах, получить request.data как этот

from flask import request 

request_data = request.data 

и вызвать log_my_request_data(request_data)

Смежные вопросы