aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/init/celery/from_celery.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/init/celery/from_celery.py')
-rw-r--r--mediagoblin/init/celery/from_celery.py61
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):