0001-add-a-custom-logger-class-to-make-log-level-dynamic-.patch
debian/debian_config_common.py | ||
---|---|---|
11 | 11 |
import os |
12 | 12 |
from django.conf import global_settings |
13 | 13 | |
14 |
import hobo.logger |
|
15 | ||
14 | 16 |
DEBUG = False |
15 | 17 |
TEMPLATE_DEBUG = False |
16 | 18 | |
... | ... | |
40 | 42 |
}, |
41 | 43 |
'handlers': { |
42 | 44 |
'syslog': { |
43 |
'level': 'INFO',
|
|
45 |
'level': 'DEBUG',
|
|
44 | 46 |
'address': '/dev/log', |
45 | 47 |
'class': 'logging.handlers.SysLogHandler', |
46 | 48 |
'formatter': 'syslog', |
... | ... | |
58 | 60 |
'loggers': { |
59 | 61 |
'django.db': { |
60 | 62 |
# even when debugging seeing SQL queries is too much |
61 |
'level': 'INFO', |
|
63 |
'level': hobo.logger.SettingsLogLevel( |
|
64 |
default_log_level='INFO', |
|
65 |
debug_setting='DEBUG_DB'), |
|
62 | 66 |
}, |
63 | 67 |
'django.request': { |
64 | 68 |
'level': 'ERROR', |
... | ... | |
71 | 75 |
'propagate': False, |
72 | 76 |
}, |
73 | 77 |
'': { |
74 |
'level': 'INFO', |
|
78 |
'level': hobo.logger.SettingsLogLevel( |
|
79 |
default_log_level='INFO'), |
|
75 | 80 |
'handlers': ['syslog'], |
76 | 81 |
}, |
77 | 82 |
}, |
hobo/logger.py | ||
---|---|---|
1 |
import logging |
|
2 | ||
3 |
class SettingsLogLevel(int): |
|
4 |
def __new__(cls, default_log_level, debug_setting='DEBUG'): |
|
5 |
return super(SettingsLogLevel, cls).__new__( |
|
6 |
cls, getattr(logging, default_log_level)) |
|
7 | ||
8 |
def __init__(self, default_log_level, debug_setting='DEBUG'): |
|
9 |
self.debug_setting = debug_setting |
|
10 |
super(SettingsLogLevel, self).__init__( |
|
11 |
getattr(logging, default_log_level)) |
|
12 | ||
13 |
class DjangoLogger(logging.getLoggerClass()): |
|
14 |
def getEffectiveLevel(self): |
|
15 |
level = super(DjangoLogger, self).getEffectiveLevel() |
|
16 |
if isinstance(level, SettingsLogLevel): |
|
17 |
from django.conf import settings |
|
18 |
debug = getattr(settings, level.debug_setting, False) |
|
19 |
if debug: |
|
20 |
return logging.DEBUG |
|
21 |
return level |
|
22 | ||
23 |
logging.setLoggerClass(DjangoLogger) |
|
24 |
hobo/wsgi.py | ||
---|---|---|
10 | 10 |
import os |
11 | 11 |
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hobo.settings") |
12 | 12 | |
13 |
# set the LoggerClass to DjangoLogger |
|
14 |
import hobo.logger |
|
15 | ||
13 | 16 |
from django.core.wsgi import get_wsgi_application |
14 | 17 |
application = get_wsgi_application() |
manage.py | ||
---|---|---|
2 | 2 |
import os |
3 | 3 |
import sys |
4 | 4 | |
5 |
# set the LoggerClass to DjangoLogger |
|
6 |
import hobo.logger |
|
7 | ||
5 | 8 |
if __name__ == "__main__": |
6 | 9 |
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hobo.settings") |
7 | 10 | |
8 |
- |