add logging to settings
authorMaciej Tronowski <mtro@man.poznan.pl>
Fri, 6 Mar 2015 14:12:51 +0000 (15:12 +0100)
committerMaciej Tronowski <mtro@man.poznan.pl>
Fri, 6 Mar 2015 14:12:51 +0000 (15:12 +0100)
.gitignore
logs/.keep [new file with mode: 0644]
plgng/settings_common.py
plgng/settings_logging.py [new file with mode: 0644]

index 4973aa0..6ee7656 100644 (file)
@@ -1,3 +1,4 @@
 .idea
 db.sqlite3
 *.pyc
+*.log
diff --git a/logs/.keep b/logs/.keep
new file mode 100644 (file)
index 0000000..e69de29
index 3cda418..503c0a5 100644 (file)
@@ -14,6 +14,7 @@ import os
 import django.conf.global_settings as defaults
 
 from local import *
+from settings_logging import LOGGING
 
 BASE_DIR = os.path.dirname(os.path.dirname(__file__))
 
diff --git a/plgng/settings_logging.py b/plgng/settings_logging.py
new file mode 100644 (file)
index 0000000..21817ca
--- /dev/null
@@ -0,0 +1,101 @@
+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',
+        },
+    }
+}