如何记录摇摇欲坠/连接请求正文?

时间:2019-03-23 17:01:17

标签: python-logging connexion

我正在使用connexion和Swagger在Python中创建一个API。我想将所有传入呼叫记录到文件中,以便可以看到请求的内容。我已经能够记录收到的电话的路径,但是我不知道如何记录正文。

在这里配置日志记录:

if __name__ == '__main__':
    import logging
    logging.basicConfig(format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s',                            filename='golden_record.log',level=logging.DEBUG)

当我查看日志时,会看到路径,如以下用于POST调用的内容...

  

2019-03-23 12:47:16,182-werkzeug-INFO-127.0.0.1--[2019年3月23日   12:47:16]“ POST / golden_record / account HTTP / 1.1” 400-

,但我看不到通话的内容(即我发送的数据)。有没有一种方法可以自动记录每个来电?这样做将有助于调试无法正常运行的调用。谢谢!

1 个答案:

答案 0 :(得分:0)

只需在请求前添加一个Flask。 Connexion实例将Flask实例存储为app属性,因此您可以使用app.app进行访问。

添加代码,您将记录正文:

@app.app.before_request def log_request_info(): print('Body: %s', request.get_data())

print方法更改为记录器:

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

request的导入是:

from flask import request

app是您的Connexion实例:

app = connexion.App(__name__, specification_dir="./swagger/")

我用代码创建了要点。 https://gist.github.com/kevinmmartins/f832c21215bb51cea73b8fdd28f6d88d