scrapy内置伐木者:
- scrapy.utils.log
- scrapy.crawler
- scrapy.middleware
- scrapy.core.engine
- scrapy.extensions.logstats
- scrapy.extensions.telnet
- scrapy.core.scraper
- scrapy.statscollector
非常详细。
我试图设置与用户蜘蛛日志级别和信息不同的日志级别,调试。这样,我可以减少"噪音"。
此辅助功能有效,有时是:
def set_loggers_level(level=logging.DEBUG):
loggers = [
'scrapy.utils.log',
'scrapy.crawler',
'scrapy.middleware',
'scrapy.core.engine',
'scrapy.extensions.logstats',
'scrapy.extensions.telnet',
'scrapy.core.scraper',
'scrapy.statscollectors'
]
for logger_name in loggers:
logger = logging.getLogger(logger_name)
logger.setLevel(level)
for handler in logger.handlers:
handler.setLevel(level)
我从Userspider init致电:
class UserSpider(scrapy.Spider):
def __init__(self, *args, **kwargs):
# customize loggers: Some loggers can't be reset a this point
helpers.set_loggers_level()
super(UserSpider, self).__init__(*args, **kwargs)
这种方法有效,其他时间则没有。
正确的解决方案是什么?
您只需在settings.py
中适当设置LOG_LEVEL
,请在此处阅读更多:https://doc.scrapy.org/en/latest/topics/settings/settings/settings.html#std:setting tingting:setting tingting-log_level
log_level
默认值:'debug'
最低日志。可用级别是:关键,错误,警告,信息,调试。有关更多信息,请参见记录。
如果项目广泛的设置不够焦点,则可以使用custom_settings
:
class MySpider(scrapy.Spider):
name = 'myspider'
custom_settings = {
'LOG_LEVEL': 'INFO',
}
来源:https://doc.scrapy.org/en/latest/topics/settings.html#settings-per-per-spider
设置每个日志处理程序不同的日志级别不是很真实。
在一天结束时,更好的方法将是从另一个脚本中启动scrapy cli工具,并需要使用解析器的过滤器日志输出。
我偶然发现了同一问题。我尝试了各种方法,但看起来像是由于scrapy使用日志记录模块,因此您必须将其设置为全球层面,从而导致砂纸打印所有调试信息。
我找到了更可靠的解决方案,可以将布尔标志与打印语句通过调试,并使用logger以获取信息,错误和警告。