Revision 00c9a6d5 astakos/middleware/log.py

b/astakos/middleware/log.py
34 34
from django.conf import settings
35 35
from django.core.exceptions import MiddlewareNotUsed
36 36

  
37
from astakos.lib.dictconfig import dictConfig
38

  
37 39
import logging
38 40

  
39 41

  
42
class NullHandler(logging.Handler):
43
    def emit(self, record):
44
        pass
45

  
46

  
40 47
class LoggingConfigMiddleware:
41 48
    def __init__(self):
42 49
        '''Initialise the logging setup from settings, called on first request.'''
43
        args = {}
44
        args['level'] = logging.DEBUG if getattr(settings, 'DEBUG', False) else logging.INFO
45
        if settings.LOGFILE:
46
            args['filename'] = settings.LOGFILE
47
        args['format'] = '%(asctime)s [%(levelname)s] %(name)s %(message)s'
48
        args['datefmt'] = '%Y-%m-%d %H:%M:%S'
49
        logging.basicConfig(**args)
50
        logging_setting = getattr(settings, 'LOGGING_SETUP', None)
51
        if logging_setting:
52
            # Disable handlers that are not used by any logger.
53
            active_handlers = set()
54
            loggers = logging_setting.get('loggers', {})
55
            for logger in loggers.values():
56
                active_handlers.update(logger.get('handlers', []))
57
            handlers = logging_setting.get('handlers', {})
58
            for handler in handlers:
59
                if handler not in active_handlers:
60
                    handlers[handler] = {'class': 'logging.NullHandler'}
61
            
62
            logging.NullHandler = NullHandler
63
            dictConfig(logging_setting)
50 64
        raise MiddlewareNotUsed('Logging setup only.')

Also available in: Unified diff