最新版本的 scrapy 已经废弃了 scrapy.log 的使用,赞成显示调用python标准日志记录。
Python 内建日志系统
import logging ### python 内建 log模块 # 发布日志的快捷方式 logging.warning('warn test1') # WARNING:root:warn test1 # 将日志级别作为参数 logging.log(logging.WARNING, 'warn test2') # WARNING:root:warn test2 ## 利用 “记录器” 封装日志,记录器可以独立配置,并且允许层次结构 # 默认使用根记录器,它是一个顶级记录器【如上面例子】 logger = logging.getLogger() # 显示获取根记录器 logging.warning('warn test3') # WARNING:root:warn test3 # 自定义记录器 logger = logging.getLogger('mylogger') logger.warning('warn test4') # WARNING:mylogger:warn test4 # 用当前模块的路径定义记录器 logger = logging.getLogger(__name__) logger.warning('warn.test5') # WARNING:__main__:warn.test5
Scrapy 日志系统
方式一:Spider 实例提供的logger方法
def parse(self, response): self.logger.info('download success')
方式二:自定义日志记录器
import logging import scrapy logger = logging.getLogger('mycustomlogger') class MySpider(scrapy.Spider): name = 'myspider' start_urls = ['https://scrapinghub.com'] def parse(self, response): logger.info('mydeflog success')
这两种方式生成的日志记录在系统命令中
日志记录配置
若要生成日志文件,需要在setting中设置
LOG_FILE = 'tq2345.log' LOG_LEVEL = 'DEBUG'
settings 配置 日志系统
- LOG_ENABLED 默认为 True,是否启用日志
- LOG_ENCODING 默认为 utf8,日志编码
- LOG_FILE 默认为 None,记录日志的文件名
- LOG_FORMAT 默认为 %(asctime)s [%(name)s] %(levelname)s: %(message)s,格式化日志消息
- LOG_DATEFORMAT 默认为 %Y-%m-%d %H:%M:%S,格式化日期
- LOG_LEVEL 默认为 DEBUG,日志级别
- LOG_STDOUT 默认为 False,如果
True
,进程的所有标准输出(和错误)都将重定向到日志。 - LOG_SHORT_NAMES 默认为 False,如果
True
日志只包含根路径。如果设置为False
然后显示负责日志输出的组件
命令行配置日志
利用项目命令配置日志
scrapy crawl spidername --logfile log.log
经测试,如果 settings 和 命令行 同时对日志进行配置,以命令行为准
也可以设置其他配置,具体请百度
参考资料:
https://www.osgeo.cn/scrapy/topics/logging.html#topics-logging-settings