Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 连接烧瓶记录格式_Python_Flask_Python Logging_Connexion - Fatal编程技术网

Python 连接烧瓶记录格式

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

我正在努力为带有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(__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)