diff --git a/scrapy/crawler.py b/scrapy/crawler.py index f8d8c5db1..6bd13e884 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -8,6 +8,7 @@ from scrapy.extension import ExtensionManager from scrapy.signalmanager import SignalManager from scrapy.utils.ossignal import install_shutdown_handlers, signal_names from scrapy.utils.misc import load_object +from scrapy.settings import overridden_settings from scrapy import log, signals @@ -33,6 +34,8 @@ class Crawler(object): if self.configured: return self.configured = True + d = dict(overridden_settings(self.settings)) + log.msg(format="Overridden settings: %(settings)r", settings=d, level=log.DEBUG) lf_cls = load_object(self.settings['LOG_FORMATTER']) self.logformatter = lf_cls.from_crawler(self) self.extensions = ExtensionManager.from_crawler(self) diff --git a/scrapy/settings/__init__.py b/scrapy/settings/__init__.py index 7075d4d9b..be81bfd9d 100644 --- a/scrapy/settings/__init__.py +++ b/scrapy/settings/__init__.py @@ -57,3 +57,17 @@ class CrawlerSettings(Settings): def __str__(self): return "" % self.settings_module + + +def iter_default_settings(): + """Return the default settings as an iterator of (name, value) tuples""" + for name in dir(default_settings): + if name.isupper(): + yield name, getattr(default_settings, name) + +def overridden_settings(settings): + """Return a dict of the settings that have been overridden""" + for name, defvalue in iter_default_settings(): + value = settings[name] + if not isinstance(defvalue, dict) and value != defvalue: + yield name, value