我想记录所有警告。我以为这样的设定captureWarnings
to True
应该可以解决问题,但事实并非如此。代码:
import logging
import warnings
from logging.handlers import RotatingFileHandler
logger_file_handler = RotatingFileHandler(u'./test.log')
logger_file_handler.setLevel(logging.DEBUG)
logging.captureWarnings(True)
logger = logging.getLogger(__name__)
logger.addHandler(logger_file_handler)
logger.setLevel(logging.DEBUG)
logger.info(u'Test')
warnings.warn(u'Warning test')
我的期望是“警告测试”应该出现在 test.log 中,但事实并非如此;仅将“测试”放入日志文件中。
如何捕获所有警告并将其重定向到日志文件?
来自logging.captureWarnings https://docs.python.org/2.7/library/logging.html#logging.captureWarnings文档:
警告模块发出的警告将被重定向到
日志系统。具体来说,警告的格式将使用warnings.formatwarning()
和结果字符串记录到记录器
名为“py.warnings”,严重程度为“警告”.
你可能想要这样的东西:
import logging
import warnings
from logging.handlers import RotatingFileHandler
logger_file_handler = RotatingFileHandler(u'test.log')
logger_file_handler.setLevel(logging.DEBUG)
logging.captureWarnings(True)
logger = logging.getLogger(__name__)
warnings_logger = logging.getLogger("py.warnings")
logger.addHandler(logger_file_handler)
logger.setLevel(logging.DEBUG)
warnings_logger.addHandler(logger_file_handler)
logger.info(u'Test')
warnings.warn(u'Warning test')
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)