Use logging.config.fileConfig()

Instead of the monster I had built before.
This commit is contained in:
Joar Wandborg 2013-02-07 22:35:42 +01:00
parent 657a463799
commit 9d7c69fb74

View File

@ -16,9 +16,8 @@
import os import os
import logging import logging
import logging.config
from configobj import ConfigObj
from ConfigParser import RawConfigParser
from celery.signals import setup_logging from celery.signals import setup_logging
from mediagoblin import app, mg_globals from mediagoblin import app, mg_globals
@ -40,45 +39,7 @@ def setup_logging_from_paste_ini(loglevel, **kw):
raise IOError('{0} does not exist. Logging can not be set up.'.format( raise IOError('{0} does not exist. Logging can not be set up.'.format(
logging_conf_file)) logging_conf_file))
logging_conf = ConfigObj(logging_conf_file) logging.config.fileConfig(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) setup_logging.connect(setup_logging_from_paste_ini)