minor logging refactoring
[qcg-portal.git] / plgng / settings_logging.py
1 import logging
2 import os
3
4 BASE_DIR = os.path.dirname(os.path.dirname(__file__))
5 LOGS_DIR = os.path.join(BASE_DIR, 'logs')
6
7
8 class RequestFilter(logging.Filter):
9     def filter(self, record):
10         record.client = record.request.META.get('REMOTE_HOST') or record.request.META.get('REMOTE_ADDR')
11         return True
12
13
14 DATE_FORMAT = "%Y.%m.%d %H:%M:%S"
15
16 LOGGING = {
17     'version': 1,
18     'disable_existing_loggers': False,
19     'formatters': {
20         'request': {
21             'format': '[%(asctime)s] %(levelname)-8s %(client)16s - %(status_code)s - %(message)s',
22             'datefmt': DATE_FORMAT,
23         },
24         'simple': {
25             'format': '[%(asctime)s] %(levelname)-8s - %(message)s',
26             'datefmt': DATE_FORMAT,
27         },
28         'verbose': {
29             'format': '[%(asctime)s] %(levelname)-8s - %(filename)s:%(lineno)s in %(funcName)s - %(message)s',
30             'datefmt': DATE_FORMAT,
31         },
32     },
33     'filters': {
34         'request_filter': {
35             '()': 'plgng.settings_logging.RequestFilter',
36         },
37     },
38     'handlers': {
39         'console': {
40             'level': 'DEBUG',
41             'class': 'logging.StreamHandler',
42         },
43         'main': {
44             'level': 'INFO',
45             'class': 'logging.handlers.RotatingFileHandler',
46             'filename': os.path.join(LOGS_DIR, 'main.log'),
47             'maxBytes': 1024 * 1024 * 5,  # 5 MB
48             'backupCount': 10,
49             'formatter': 'request',
50             'filters': ['request_filter']
51         },
52         'request': {
53             'level': 'INFO',
54             'class': 'logging.handlers.RotatingFileHandler',
55             'filename': os.path.join(LOGS_DIR, 'requests.log'),
56             'maxBytes': 1024 * 1024 * 5,  # 5 MB
57             'backupCount': 10,
58             'formatter': 'request',
59             'filters': ['request_filter']
60         },
61         'openid': {
62             'level': 'INFO',
63             'class': 'logging.handlers.RotatingFileHandler',
64             'filename': os.path.join(LOGS_DIR, 'openid.log'),
65             'maxBytes': 1024 * 1024 * 5,  # 5 MB
66             'formatter': 'simple',
67         },
68         'sql': {
69             'level': 'DEBUG',
70             'class': 'logging.handlers.RotatingFileHandler',
71             'filename': os.path.join(LOGS_DIR, 'sql.log'),
72             'maxBytes': 1024 * 1024 * 5,  # 5 MB
73             'formatter': 'simple',
74         },
75         'service': {
76             'level': 'DEBUG',
77             'class': 'logging.handlers.RotatingFileHandler',
78             'filename': os.path.join(LOGS_DIR, 'service.log'),
79             'maxBytes': 1024 * 1024 * 5,  # 5 MB
80             'formatter': 'verbose',
81         },
82     },
83     'loggers': {
84         'django': {
85             'handlers': ['main'],
86             'level': 'INFO',
87         },
88         'django.request': {
89             'handlers': ['request'],
90             'level': 'INFO',
91             'propagate': False,
92         },
93         'django.db.backends': {
94             'handlers': ['sql'],
95             'level': 'DEBUG',
96             'propagate': False,
97         },
98         'openid': {
99             'handlers': ['openid'],
100             'level': 'INFO',
101         },
102         'qcg.service': {
103             'handlers': ['service'],
104             'level': 'INFO',
105             'propagate': False,
106         },
107     }
108 }