我是Scrapy的新手,我曾经设法在Scrapy 0.24上运行我的脚本。但是当我切换到新推出的1.0时,我遇到了一个日志记录问题:我想要做的是将文件和控制台日志级别都设置为INFO,但是我设置了LOG_LEVEL或configure_logging()函数(使用Python)内部日志包而不是scrapy.log),Scrapy始终将 DEBUG 级别信息记录到控制台,它以dict格式返回整个项目对象。实际上,LOG_LEVEL选项仅适用于外部文件。我怀疑它必须与Python日志有关,但不知道如何设置它。任何人都可以帮助我吗?
这是我在run_my_spider.py中配置我的日志记录的方式:
from crawler.settings import LOG_FILE, LOG_FORMAT
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from scrapy.utils.log import configure_logging
from crawler.spiders.MySpiders import MySpider
import logging
def run_spider(spider):
settings = get_project_settings()
# configure file logging
# It ONLY works for the file
configure_logging({'LOG_FORMAT': LOG_FORMAT,
'LOG_ENABLEED' : True,
'LOG_FILE' : LOG_FILE,
'LOG_LEVEL' : 'INFO',
'LOG_STDOUT' : True})
# instantiate spider
process = CrawlerProcess(settings)
process.crawl(MySpider)
logging.info('Running Crawler: ' + spider.name)
process.start() # the script will block here until the spider_closed signal was sent
logging.info('Crawler ' + spider.name + ' stopped.\n')
......
这是控制台输出:
DEBUG:scrapy.core.engine:Crawled (200) <GET http://mil.news.sina.com.cn/2014-10-09/0450804543.html>(referer: http://rss.sina.com.cn/rollnews/jczs/20141009.js)
{'item_name': 'item_sina_news_reply',
'news_id': u'jc:27-1-804530',
'reply_id': u'jc:27-1-804530:1',
'reply_lastcrawl': '1438605374.41',
'reply_table': 'news_reply_20141009'}
非常感谢!
答案 0 :(得分:1)
您在控制台中查看的内容可能是Twisted Logs。 它会将Debug级别消息打印到控制台。 您可以使用以下方法将它们重定向到日志文件:
from twisted.python import log
observer = log.PythonLoggingObserver(loggerName='logname')
observer.start()