Scrapy内置记录器:
非常详细。
我试图设置一个与用户蜘蛛日志级别INFO不同的日志级别DEBUG。这样我就可以减少'噪音'。
这个辅助函数有时会起作用:
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)
这种方法有一段时间,有些则没有。
什么是正确的解决方案?
答案 0 :(得分:0)
您只需在LOG_LEVEL
中正确设置settings.py
,请在此处阅读更多内容:https://doc.scrapy.org/en/latest/topics/settings.html#std:setting-LOG_LEVEL
<强> LOG_LEVEL 强>
默认值:'DEBUG'
记录的最低级别。可用级别包括:CRITICAL,ERROR,WARNING,INFO,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-spider
答案 1 :(得分:0)
为每个日志处理程序设置不同的日志级别是不太可行的。
在一天结束时,更好的方法是从另一个脚本启动scrapy cli工具,并使用解析器过滤日志输出。
答案 2 :(得分:0)
我偶然发现了同样的问题。我尝试了各种方法,但是由于Scrapy使用了日志记录模块,因此您必须将其设置为全局级别,这会导致Scrapy打印所有调试信息。
我发现了一种更可靠的解决方案,可以将bool标志与打印语句一起用于DEBUG,并将记录器用于INFO,ERROR和WARNING。