From 1a0572ad02446c0dacc682e503baffc2b5e67e98 Mon Sep 17 00:00:00 2001 From: Andrey Rakhmatullin Date: Tue, 12 Sep 2023 16:46:35 +0400 Subject: [PATCH] Reinstall the log handler after loading per-spider settings. --- scrapy/crawler.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scrapy/crawler.py b/scrapy/crawler.py index 67e44541d..90f5e7918 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -72,18 +72,16 @@ class Crawler: self.spidercls: Type[Spider] = spidercls self.settings: Settings = settings.copy() self.spidercls.update_settings(self.settings) + self._update_root_log_handler() self.addons: AddonManager = AddonManager(self) self.signals: SignalManager = SignalManager(self) - if get_scrapy_root_handler() is not None: - # scrapy root handler already installed: update it with new settings - install_scrapy_root_handler(self.settings) - self._init_reactor: bool = init_reactor self.crawling: bool = False self._settings_loaded: bool = False self._started: bool = False + self.extensions: Optional[ExtensionManager] = None self.stats: Optional[StatsCollector] = None self.logformatter: Optional[LogFormatter] = None @@ -91,6 +89,11 @@ class Crawler: self.spider: Optional[Spider] = None self.engine: Optional[ExecutionEngine] = None + def _update_root_log_handler(self) -> None: + if get_scrapy_root_handler() is not None: + # scrapy root handler already installed: update it with new settings + install_scrapy_root_handler(self.settings) + def _load_settings(self) -> None: if self._settings_loaded: return @@ -153,6 +156,7 @@ class Crawler: try: self.spider = self._create_spider(*args, **kwargs) self._load_settings() + self._update_root_log_handler() self.engine = self._create_engine() start_requests = iter(self.spider.start_requests()) yield self.engine.open_spider(self.spider, start_requests)