Python 连接烧瓶记录格式
我正在努力为带有gevent服务器的connexion flask rest api设置日志记录。我只想在每个请求之后记录消息,比如Python 连接烧瓶记录格式,python,flask,python-logging,connexion,Python,Flask,Python Logging,Connexion,我正在努力为带有gevent服务器的connexion flask rest api设置日志记录。我只想在每个请求之后记录消息,比如GET/health HTTP/1.1,或者更好的是只记录HTTP状态代码,比如200。在创建应用程序之前,我遵循flask docu并设置一个dictConfig。像这样: import connexion from logging.config import dictConfig def main(): app = connexion.App(__n
GET/health HTTP/1.1
,或者更好的是只记录HTTP状态代码,比如200
。在创建应用程序之前,我遵循flask docu并设置一个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)后:
因此,在app.run()
之前,app.app.logging()
看起来很好,只发送消息自定义消息:这是一个检查代码>,但在此之后,日志不再遵循字典。
知道我做错了什么吗?据我所知,dictConfig没有被使用,因为您没有将它分配给任何对象
你需要像这样的东西
logging.config.dictConfig(yourconfig)
其中yourconfig是您的dictConfig。将dictConfig移动到main()以使其位于同一作用域中,或者如果选择将其分开,则从文件导入
请参阅:谢谢,如果服务器不是gevent
,则此功能正常工作,因此只需使用app.run()
。不幸的是,如果使用的是gevent
,它就不起作用了。你知道如何只记录200状态码吗?我没想到使用%(message)
我得到了127.0.0.1---[2021-03-15 12:42:35]“get/health HTTP/1.1”200 126 0.001714
。这是我认为标准的werkzeug
日志,我不知道如何更改它
logging.config.dictConfig(yourconfig)