diff options
Diffstat (limited to 'mediagoblin/init/celery/from_celery.py')
-rw-r--r-- | mediagoblin/init/celery/from_celery.py | 51 |
1 files changed, 11 insertions, 40 deletions
diff --git a/mediagoblin/init/celery/from_celery.py b/mediagoblin/init/celery/from_celery.py index 41fffa45..8a794abb 100644 --- a/mediagoblin/init/celery/from_celery.py +++ b/mediagoblin/init/celery/from_celery.py @@ -16,13 +16,13 @@ import os import logging +import logging.config -from configobj import ConfigObj -from ConfigParser import RawConfigParser from celery.signals import setup_logging from mediagoblin import app, mg_globals from mediagoblin.init.celery import setup_celery_from_config +from mediagoblin.tools.pluginapi import PluginManager OUR_MODULENAME = __name__ @@ -36,49 +36,20 @@ def setup_logging_from_paste_ini(loglevel, **kw): else: logging_conf_file = 'paste.ini' + # allow users to set up explicitly which paste file to check via the + # PASTE_CONFIG environment variable + logging_conf_file = os.environ.get( + 'PASTE_CONFIG', logging_conf_file) + if not os.path.exists(logging_conf_file): raise IOError('{0} does not exist. Logging can not be set up.'.format( logging_conf_file)) - logging_conf = ConfigObj(logging_conf_file) - - config = logging_conf - - # Read raw config to avoid interpolation of formatting parameters - raw_config = RawConfigParser() - raw_config.readfp(open(logging_conf_file)) - - # Set up formatting - # Get the format string and circumvent configobj interpolation of the value - fmt = raw_config.get('formatter_generic', 'format') - - # Create the formatter - formatter = logging.Formatter(fmt) - - # Check for config values - if not config.get('loggers') or not config['loggers'].get('keys'): - print('No loggers found') - return - - # Iterate all teh loggers.keys values - for name in config['loggers']['keys'].split(','): - if not config.get('logger_{0}'.format(name)): - continue - - log_params = config['logger_{0}'.format(name)] - - qualname = log_params['qualname'] if 'qualname' in log_params else name - - if qualname == 'root': - qualname = None - - logger = logging.getLogger(qualname) - - level = getattr(logging, log_params['level']) - logger.setLevel(level) + logging.config.fileConfig(logging_conf_file) - for handler in logger.handlers: - handler.setFormatter(formatter) + for callable_hook in \ + PluginManager().get_hook_callables('celery_logging_setup'): + callable_hook() setup_logging.connect(setup_logging_from_paste_ini) |