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