为什么我会收到“不需要的”日志条目?

时间:2016-12-06 15:38:43

标签: python python-3.x logging

我开始探索Python 3.5的{​​{1}}包。我使用logging文件

中的这两个命令设置了日志记录
main

另外我插入了

import logging
logging.basicConfig(filename=r'fractal.log', level=logging.DEBUG)

在另一个模块中。 所有我想要的日志条目都在日志文件中正确显示,但除了那些我得到这两个,这不是我的日志代码生成的AFAIK:

import logging

这些日志条目显然没有在DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): ichart.finance.yahoo.com DEBUG:requests.packages.urllib3.connectionpool:http://ichart.finance.yahoo.com:80 "GET /table.csv?d=11&b=1&e=6&s=%5EIRX&g=d&c=1900&a=0&f=2016&ignore=.csv HTTP/1.1" 200 None 模块中生成。此外,当我将日志记录级别设置为main时,它们不会显示。

有谁知道为什么我会收到这些日志条目?它们是我代码问题的证据吗?

1 个答案:

答案 0 :(得分:4)

这是因为您正在设置根记录器的级别,requests模块将所有日志记录委派给它。您可以通过明确关闭requests记录器来解决此问题:

logging.getLogger('requests').setLevel(logging.ERROR)

这会使来自DEBUG的所有requests级消息静音。

或者您可以使用自己的记录器而不是依赖根记录器,有多种方法可以执行此操作(例如,可以使用logging.config.dictConfig),但您可以轻松地手动执行此操作,类似于以下内容:

import logging
logger = logging.getLogger(__name__)

logger.addHandler(logging.FileHandler('fractal.log'))
logger.setLevel(logging.DEBUG)