diff options
Diffstat (limited to 'mediagoblin/init/celery/from_celery.py')
-rw-r--r-- | mediagoblin/init/celery/from_celery.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/mediagoblin/init/celery/from_celery.py b/mediagoblin/init/celery/from_celery.py index b8297255..41fffa45 100644 --- a/mediagoblin/init/celery/from_celery.py +++ b/mediagoblin/init/celery/from_celery.py @@ -15,6 +15,11 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. import os +import logging + +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 @@ -22,6 +27,62 @@ from mediagoblin.init.celery import setup_celery_from_config OUR_MODULENAME = __name__ +_log = logging.getLogger(__name__) + + +def setup_logging_from_paste_ini(loglevel, **kw): + if os.path.exists(os.path.abspath('paste_local.ini')): + logging_conf_file = 'paste_local.ini' + else: + logging_conf_file = 'paste.ini' + + 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) + + for handler in logger.handlers: + handler.setFormatter(formatter) + + +setup_logging.connect(setup_logging_from_paste_ini) + def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME, default_conf_file=None): |