Scrapy Logging:以不同方式格式化 statscollectors 时间戳

Scrapy Logging: Format statscollectors timestamps differently

当一个标准的 scrapy 蜘蛛完成它的爬行时,它会使用 statscollectors 模块记录抓取的摘要,看起来像这样(截断):

2021-03-21 15:11:16 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 4,
 'elapsed_time_seconds': 91125.763498,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2021, 3, 21, 14, 11, 6, 806324),
 'item_scraped_count': 30395,
 'log_count/ERROR': 4,
 'log_count/INFO': 574,
 'log_count/WARNING': 38,
 'start_time': datetime.datetime(2021, 3, 20, 12, 52, 21, 42826)}

我想以不同方式设置 start_timeend_time 值的格式,以便更轻松地将我的日志文件作为监视管道的一部分进行处理。例如,

datetime.datetime(2021, 3, 21, 14, 11, 6, 806324) => 2021-03-21 14:11:06.806324.

无论如何我都看不到要在 logging settings 中更改它。知道如何影响 statscollectors 模块的格式吗?

这不是很明显,但是你可以在你的蜘蛛上定义一个 closed 函数,它会在蜘蛛关闭时执行,你可以通过 [=13= 访问 stats ].您可以像这样使用它来记录 start/end 次

def closed(self, reason):
    self.logger.info("Start time: %s", self.crawler.stats.get_value("start_time"))
    self.logger.info("End time: %s", self.crawler.stats.get_value("start_time"))

如果您想在最后关闭统计数据转储,那么可以使用 STATS_DUMP 设置

来完成