📅  最后修改于: 2023-12-03 15:34:52.439000             🧑  作者: Mango
Scrapy是一个非常强大的Python爬虫框架,支持异步和多线程,同时还提供了强大的日志记录功能。在项目中使用日志记录可以方便我们跟踪程序的执行过程,发现问题并进行排除。本文将重点介绍Scrapy日志记录的相关内容。
Scrapy的日志模块是基于Python的标准logging模块开发的。Scrapy默认使用的日志级别是INFO。Scrapy日志模块包含以下内容:
Scrapy的日志模块通过以下命令进行配置:
import logging
# 配置日志信息
logging.basicConfig(
level=logging.INFO, # 日志级别,INFO级别及以上的日志信息被输出到控制台
format='%(asctime)s [%(name)s] %(levelname)s: %(message)s', # 日志格式
datefmt='%Y-%m-%d %H:%M:%S' # 时间格式
)
另外,Scrapy的底层框架Twisted也提供了一套日志模块,不过目前Scrapy还没有完全使用这套模块。
Scrapy的日志级别包含以下5个级别:
使用方式如下:
import logging
logger = logging.getLogger(__name__)
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
Scrapy默认输出的日志信息格式如下:
2020-10-08 10:03:50 [scrapy.extensions.feedexport] INFO: Stored CSV feed (1 items) in: xxx.csv
其中:
Scrapy日志模块提供了几个占位符,可以方便地对日志消息进行格式化:
Scrapy内置了多个日志记录器,每个记录器都有一个名称和一个等级,在项目配置中可以根据需要调整记录器的等级或关闭某个记录器。常用的Scrapy内置日志记录器有以下几个:
以下是关闭scrapy.core.scheduler日志记录器的示例代码:
LOG_ENABLED = True
LOG_LEVEL = 'INFO'
LOG_FORMAT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s'
LOG_DATEFORMAT = '%Y-%m-%d %H:%M:%S'
LOG_FILE = 'log.txt'
LOG_DISABLED = ['scrapy.core.scheduler']
for logger_name in LOG_DISABLED:
logging.getLogger(logger_name).propagate = False
Scrapy日志模块可以将日志输出到文件,以保留更为详细的日志信息。在配置中添加以下代码即可:
LOG_ENABLED = True
LOG_LEVEL = 'INFO'
LOG_FORMAT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s'
LOG_DATEFORMAT = '%Y-%m-%d %H:%M:%S'
# 输出到文件,与控制台输出互斥
LOG_FILE = 'log.txt'
本文介绍了Scrapy日志记录的相关内容,包括Scrapy日志模块、Scrapy日志级别、Scrapy日志消息格式、Scrapy日志记录器以及Scrapy输出到文件。通过日志记录,可以更好地跟踪程序的执行情况,及时发现并解决问题。