如何将Werkzeug的GET请求日志设置为INFO级别?
解决方案
你可以通过调整Werkzeug内置日志器的级别来实现需求,无需自定义Logger:
方法1:在Flask应用代码中设置
在你的Flask应用初始化代码末尾添加以下内容:
import logging # 将Werkzeug日志器的级别设为INFO,只输出请求日志(INFO级),过滤DEBUG级的"Closing connection" logging.getLogger('werkzeug').setLevel(logging.INFO)
同时启动gunicorn时保持日志级别为DEBUG,确保应用自身的DEBUG日志正常输出:
gunicorn --log-level debug your_app:app
方法2:通过gunicorn配置文件设置
如果不想修改Flask代码,可以在gunicorn的配置文件(如gunicorn.conf.py)中添加启动钩子来调整日志级别:
# 全局日志级别设为DEBUG,保留应用的DEBUG细节 loglevel = 'debug' def on_starting(server): import logging # 调整Werkzeug日志器级别 logging.getLogger('werkzeug').setLevel(logging.INFO)
启动时指定配置文件:
gunicorn -c gunicorn.conf.py your_app:app
原理说明
Werkzeug的HTTP请求日志(如GET /path HTTP/1.1)默认是INFO级别,而"Closing connection"这类冗余日志属于DEBUG级别。通过将werkzeug日志器的级别设为INFO,就能只保留请求日志,过滤掉连接关闭这类DEBUG日志;同时全局日志级别保持DEBUG,确保你应用自身的DEBUG级细节日志正常输出。
内容的提问来源于stack exchange,提问作者dsenese
相关产品推荐
相关产品推荐

