Connexion Flask日志记录格式



我很难用gevent服务器为connexion flask rest api设置日志。我想只记录每个请求后的消息,比如GET /health HTTP/1.1,或者更好的是只记录http状态代码,比如200。在创建应用程序之前,我按照烧瓶文档设置了dictConfig。像这样:

import connexion
from logging.config import dictConfig

def main():
app = connexion.App(__name__)
app.app.logger.info('This is a check!')
app.add_api('swagger.yaml')
app.run(server='gevent')
if __name__ == '__main__':
dictConfig({
'version': 1,
'formatters': {'default': {
'format': 'Custom message: %(message)s',
}},
'handlers': {'wsgi': {
'class': 'logging.StreamHandler',
'stream': 'ext://flask.logging.wsgi_errors_stream',
'formatter': 'default'
}},
'root': {
'level': 'INFO',
'handlers': ['wsgi']
}
})
main()

启动应用程序并发送两个请求(一个200和一个405(后:

Custom message: This is a check!
127.0.0.1 - - [2021-03-15 12:42:35] "GET /health HTTP/1.1" 200 126 0.001714
127.0.0.1 - - [2021-03-15 12:42:35] "PUT /health HTTP/1.1" 405 275 0.000711

因此,在app.run()之前,app.app.logging()看起来很好,只发送消息Custom message: This is a check!,但在那之后,日志不再遵循字典。知道我做错了什么吗?

据我所知,dictConfig没有被使用,因为您没有将其分配给任何东西。

你需要像这样的东西

logging.config.dictConfig(yourconfig)

其中yourconfig是dictConfig。将dictConfig移动到main((以使其处于同一范围内,或者如果选择将其分离,则从文件中导入。

请参阅:日志Cookbook

相关内容

  • 没有找到相关文章

最新更新