python - 将scrapy内置记录器设置在与用户代码记录器不同的级别
问题描述
Scrapy 内置记录器:
- scrapy.utils.log
- scrapy.crawler
- scrapy.middleware
- scrapy.core.engine
- scrapy.extensions.logstats
- scrapy.extensions.telnet
- scrapy.core.scraper
- scrapy.statscollectors
非常冗长。
我试图设置与用户蜘蛛日志级别 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)
这种方法在一段时间内有效,而另一些则无效。
什么是正确的解决方案?
解决方案
您可以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
推荐阅读
- javascript - 等待使用 Papaparse 加载几个 CSV 文件
- excel - Excel 访问 VBA 循环
- perl - 用 cpanm 安装 B::C 挂起?
- json - 如何从 Golang 中的 json 中提取单个值?
- python - 水平(沿行)前向填充 Pandas 数据框,而不在每行中前向填充最后一个值
- c# - .Net Core 2.2 AutoFac 注册依赖注入记录器实例
- google-apps-script - 为什么我的电子表格没有从外部来源的输入值更改?
- python - 无法将参数传递给 XGBoost
- xml - 将映射为隐藏在 XML 中的列读回 VB.Net 中的 DataSet?
- bash - 在后续条目中重用文本条目中的数值