From c4939f464bf82450ddcf5942e057c90f1d030018 Mon Sep 17 00:00:00 2001 From: Taito Horiuchi Date: Fri, 13 Jan 2017 13:28:14 +0200 Subject: [PATCH] enable settings.LOGGING to benefit dictConfig --- scrapy/utils/log.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/scrapy/utils/log.py b/scrapy/utils/log.py index 0ea91872b..09a7502be 100644 --- a/scrapy/utils/log.py +++ b/scrapy/utils/log.py @@ -92,34 +92,29 @@ def configure_logging(settings=None, install_root_handler=True): if isinstance(settings, dict) or settings is None: settings = Settings(settings) + LOGGING_FROM_SETTINGS = settings.get('LOGGING') + if settings.getbool('LOG_STDOUT'): sys.stdout = StreamLogger(logging.getLogger('stdout')) + LOGGING_FROM_SETTINGS = None - if install_root_handler: + elif LOGGING_FROM_SETTINGS: + LOGGING = DEFAULT_LOGGING.copy() + LOGGING.update(LOGGING_FROM_SETTINGS) + dictConfig(LOGGING) + + if install_root_handler and not LOGGING_FROM_SETTINGS: logging.root.setLevel(logging.NOTSET) handler = _get_handler(settings) logging.root.addHandler(handler) -def _import_hander(name): - """Return class from dotted name""" - import importlib - module_name, class_name = name.rsplit('.', 1) - module = importlib.import_module(module_name) - return getattr(module, class_name) - - def _get_handler(settings): """ Return a log handler object according to settings """ filename = settings.get('LOG_FILE') if filename: encoding = settings.get('LOG_ENCODING') - handler = settings.get('LOG_HANDLER') - if handler: - Handler = _import_hander(handler) - else: - Handler = logging.FileHandler - handler = Handler(filename, encoding=encoding) + handler = logging.FileHandler(filename, encoding=encoding) elif settings.getbool('LOG_ENABLED'): handler = logging.StreamHandler() else: