--- /dev/null
+import logging
+import os
+
+BASE_DIR = os.path.dirname(os.path.dirname(__file__))
+LOGS_DIR = os.path.join(BASE_DIR, 'logs')
+
+
+class RequestFilter(logging.Filter):
+ def filter(self, record):
+ record.client = record.request.META.get('REMOTE_HOST') or record.request.META.get('REMOTE_ADDR')
+ return True
+
+
+DATE_FORMAT = "%Y.%m.%d %H:%M:%S"
+
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'formatters': {
+ 'verbose': {
+ 'format': '[%(asctime)s] %(levelname)-8s - %(status_code)s - %(message)s',
+ 'datefmt': DATE_FORMAT,
+ },
+ 'simple': {
+ 'format': '%(levelname)s %(message)s',
+ 'datefmt': DATE_FORMAT,
+ },
+ 'request': {
+ 'format': '[%(asctime)s] %(levelname)-8s %(client)16s - %(status_code)s - %(message)s',
+ 'datefmt': DATE_FORMAT,
+ },
+ 'date_msg': {
+ 'format': '[%(asctime)s] %(levelname)-8s %(message)s',
+ 'datefmt': DATE_FORMAT,
+ },
+ },
+ 'filters': {
+ 'request_filter': {
+ '()': 'plgng.settings_logging.RequestFilter',
+ },
+ },
+ 'handlers': {
+ 'console': {
+ 'level': 'DEBUG',
+ 'class': 'logging.StreamHandler',
+ 'formatter': 'simple'
+ },
+ 'main_log': {
+ 'level': 'INFO',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': os.path.join(LOGS_DIR, 'main.log'),
+ 'maxBytes': 1024 * 1024 * 5, # 5 MB
+ 'backupCount': 10,
+ 'formatter': 'verbose'
+ },
+ 'request_log': {
+ 'level': 'INFO',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': os.path.join(LOGS_DIR, 'requests.log'),
+ 'maxBytes': 1024 * 1024 * 5, # 5 MB
+ 'backupCount': 10,
+ 'formatter': 'request',
+ 'filters': ['request_filter']
+ },
+ 'openid_log': {
+ 'level': 'INFO',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': os.path.join(LOGS_DIR, 'openid.log'),
+ 'maxBytes': 1024 * 1024 * 5, # 5 MB
+ 'formatter': 'request',
+ 'filters': ['request_filter']
+ },
+ 'sql_log': {
+ 'level': 'DEBUG',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': os.path.join(LOGS_DIR, 'sql.log'),
+ 'maxBytes': 1024 * 1024 * 5, # 5 MB
+ 'formatter': 'date_msg',
+ },
+ },
+ 'loggers': {
+ 'django': {
+ 'handlers': ['main_log'],
+ 'level': 'INFO',
+ },
+ 'django.request': {
+ 'handlers': ['request_log'],
+ 'level': 'INFO',
+ 'propagate': False,
+ },
+ 'django.db.backends': {
+ 'handlers': ['sql_log'],
+ 'level': 'DEBUG',
+ 'propagate': False,
+ },
+ 'openid': {
+ 'handlers': ['openid_log'],
+ 'level': 'INFO',
+ },
+ }
+}