首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用TimedRotatingHandler时将python flask werkzeug日志重定向到日志文件?

如何在使用TimedRotatingHandler时将python flask werkzeug日志重定向到日志文件?
EN

Stack Overflow用户
提问于 2015-06-25 19:05:43
回答 5查看 6.3K关注 0票数 7

我已经为Flask服务器创建了一个TimedRotatingHandler。但是,werkzeug生成的所有日志仍然会被抛出到控制台上。

如何使用日志轮换功能将这些日志重定向到日志文件(test.log)。

代码片段:

代码语言:javascript
复制
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
# add a file handler
fh = logging.handlers.TimedRotatingFileHandler("test.log",when='M',interval=1,backupCount=0)
fh.setLevel(logging.DEBUG)
# create a formatter and set the formatter for the handler.
frmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
fh.setFormatter(frmt)
# add the Handler to the logger
log.addHandler(fh)
app.run(host='0.0.0.0', debug=True)

控制台上仍会抛出以下日志。

代码语言:javascript
复制
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET / HTTP/1.1" 200 -
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /static/js/jquery-1.11.2/jquery-1.11.2.min.js HTTP/1.1" 304 -
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /static/js/main/main.js HTTP/1.1" 304 -
192.168.1.6 - - [25/Jun/2015 07:11:13] "GET /favicon.ico HTTP/1.1" 404 -

将日志文件处理程序添加到werkzeug记录器也不能解决问题

代码语言:javascript
复制
logging.getLogger('werkzeug').addHandler(fh);
EN

回答 5

Stack Overflow用户

发布于 2018-02-28 08:32:32

要更改werkzeung日志,您需要覆盖logging.root.handler,如下所示:

代码语言:javascript
复制
import logging
from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler('log.log', maxBytes=10000, backupCount=1)
handler.setLevel(logging.ERROR)

logging.root.handlers = [handler]

详情请参见here

票数 2
EN

Stack Overflow用户

发布于 2015-11-09 06:59:51

它看起来像是werkzeug将消息发送到根记录器而不是命名记录器。

如果您尝试这样做,它应该会开始记录到您的文件logging.getLogger().addHandler(fh)

如果您希望它停止记录到控制台,那么您必须从根记录器中删除流处理程序。您可以使用以下命令查看根记录器的处理程序

>>> print logging.getLogger().handlers [<logging.StreamHandler object at 0x.....>, logging.handlers.TimedRotatingFileHandler object at 0x.....>]

票数 1
EN

Stack Overflow用户

发布于 2018-12-27 01:56:44

为了将flask服务器/应用程序日志定向到一个文件处理程序,并将werkzeug定向到同一个文件处理程序,您可能需要执行类似以下操作。

代码语言:javascript
复制
handler = RotatingFileHandler('test.log', maxBytes=1000000, backupCount=5)
handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler)
log = logging.getLogger('werkzeug')
log.setLevel(logging.DEBUG)
log.addHandler(handler)
app.run(host='0.0.0.0', debug=True)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31048596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档