diff --git a/scrapy/utils/log.py b/scrapy/utils/log.py index 7645b235e..b442ff7d9 100644 --- a/scrapy/utils/log.py +++ b/scrapy/utils/log.py @@ -130,7 +130,14 @@ def configure_logging( if settings.getbool("LOG_STDOUT"): sys.stdout = StreamLogger(logging.getLogger("stdout")) - if install_root_handler: + logging_from_settings = settings.getdict('LOGGING') + + if logging_from_settings: + LOGGING = DEFAULT_LOGGING.copy() + LOGGING.update(logging_from_settings) + dictConfig(LOGGING) + + elif install_root_handler: install_scrapy_root_handler(settings) diff --git a/tests/test_utils_log_handler.py b/tests/test_utils_log_handler.py new file mode 100644 index 000000000..ccf15f44a --- /dev/null +++ b/tests/test_utils_log_handler.py @@ -0,0 +1,16 @@ +from scrapy.utils import log +import logging +import unittest + + +class TestCase(unittest.TestCase): + + def test_settings_None(self): + log.configure_logging() + self.assertEqual(logging.getLogger().getEffectiveLevel(), 0) + + def test_settings_LOGGING(self): + settings = {'LOGGING': {'loggers': {'logger3': {'level': 'CRITICAL'}}}} + log.configure_logging(settings=settings) + self.assertEqual(logging.getLogger().getEffectiveLevel(), 30) + self.assertEqual(logging.getLogger('logger3').getEffectiveLevel(), 50)