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