我在以下两个问题中寻求帮助 - 如何为python中的不同日志级别设置处理程序。目前,我有
STATS_ENABLED = True
STATS_DUMP = True
LOG_FILE = 'crawl.log'
但是Scrapy生成的调试消息也会添加到日志文件中。那些非常长,理想情况下,我希望将DEBUG级别的消息留在标准错误上,并将INFO消息转储到我的LOG_FILE
。
其次,在文档中,它说The logging service must be explicitly started through the scrapy.log.start() function.
我的问题是,我在哪里运行此scrapy.log.start()
?它在我的蜘蛛里面吗?
答案 0 :(得分:4)
其次,在文档中,它说
The logging service must be explicitly started through the scrapy.log.start() function
。我的问题是,在哪里 运行此scrapy.log.start()?它在我的蜘蛛里面吗?
如果您使用scrapy crawl my_spider
运行蜘蛛 - 如果STATS_ENABLED = True
如果您手动启动抓取工具流程,则可以在启动抓取工具流程之前执行scrapy.log.start()
。
from scrapy.crawler import CrawlerProcess
from scrapy.conf import settings
settings.overrides.update({}) # your settings
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()
crawlerProcess.crawl(spider) # your spider here
log.start() # depends on LOG_ENABLED
print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."
我对你的第一个问题的了解很少:
因为您必须手动启动scrapy日志,所以这允许您使用自己的记录器。
我认为你可以在scrapy源代码中复制模块scrapy/scrapy/log.py
,修改它,导入它而不是scrapy.log
并运行start()
- scrapy将使用你的日志。其中有一行start()
表示log.startLoggingWithObserver(sflo.emit, setStdout=logstdout)
。
制作自己的观察者(http://docs.python.org/howto/logging-cookbook.html#logging-to-multiple-destinations)并在那里使用。
答案 1 :(得分:3)
我希望将标准错误和INFO消息留下的DEBUG级别消息转储到我的LOG_FILE。
您可以在settings.py中设置LOG_LEVEL = 'INFO'
,但它会完全禁用DEBUG消息。
答案 2 :(得分:3)
嗯,
只是想更新我能够通过使用
获取日志文件处理程序from twisted.python import log
import logging
logging.basicConfig(level=logging.INFO, filemode='w', filename='log.txt'""")
observer = log.PythonLoggingObserver()
observer.start()
然而,我无法让日志显示蜘蛛的名称,就像标准错误中的扭曲一样。我发布了这个question。
答案 3 :(得分:0)
scrapy some-scrapy's-args -L 'INFO' -s LOG_FILE=log1.log
输出将被重定向到logname文件。