我一直在研究一个Scrapy项目,到目前为止一切都进展顺利。然而,我对 Scrapy 的日志配置可能性并不满意。此刻,我已设定LOG_FILE = 'my_spider.log'
in the settings.py
我的项目。当我执行时scrapy crawl my_spider
在命令行上,它会为整个爬行过程创建一个大日志文件。这对于我的目的来说是不可行的。
如何将 Python 的自定义日志处理程序与scrapy.log模块?特别是,我想利用Pythonlogging.handlers.RotatingFileHandler这样我就可以将日志数据分成几个小文件,而不必处理一个大文件。不幸的是,Scrapy 日志记录工具的文档不是很广泛。提前谢谢了!
您可以通过首先在 scrapy.utils.log.configure_logging 中禁用根句柄,然后添加您自己的日志处理程序,将所有 scrapy 日志记录到文件中。
在scrapy项目的settings.py文件中添加以下代码:
import logging
from logging.handlers import RotatingFileHandler
from scrapy.utils.log import configure_logging
LOG_ENABLED = False
# Disable default Scrapy log settings.
configure_logging(install_root_handler=False)
# Define your logging settings.
log_file = '/tmp/logs/CRAWLER_logs.log'
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rotating_file_log = RotatingFileHandler(log_file, maxBytes=10485760, backupCount=1)
rotating_file_log.setLevel(logging.DEBUG)
rotating_file_log.setFormatter(formatter)
root_logger.addHandler(rotating_file_log)
我们还根据需要自定义日志级别(DEBUG 到 INFO)和格式化程序。
要在蜘蛛、管道中添加自定义日志,我们可以像普通的 python 日志记录一样轻松地执行此操作,如下所示:
pipelines.py 内部
import logging
logger = logging.getLogger()
logger.info('processing item')
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)