[geany/www.geany.org] b1d2a5: Improve logging config

Enrico Tröger git-noreply at xxxxx
Tue May 7 19:43:15 UTC 2019


Branch:      refs/heads/master
Author:      Enrico Tröger <enrico.troeger at uvena.de>
Committer:   Enrico Tröger <enrico.troeger at uvena.de>
Date:        Tue, 07 May 2019 19:43:15 UTC
Commit:      b1d2a5f7c7d546580f879a924e4be29b522b3869
             https://github.com/geany/www.geany.org/commit/b1d2a5f7c7d546580f879a924e4be29b522b3869

Log Message:
-----------
Improve logging config

Log request IDs as passed as header from webserver.
General overhaul of the logging configuration to more sensible settings.
Capture warnings and log them using the logging subsystem.


Modified Paths:
--------------
    README.dev.md
    geany/settings.py
    requirements.txt

Modified: README.dev.md
2 lines changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -101,6 +101,8 @@ the settings to your needs:
     INTERNAL_IPS = ("127.0.0.1",)
     ALLOWED_HOSTS = ('127.0.0.1', 'localhost')
 
+    LOGGING['handlers']['file']['filename'] = '/tmp/geany_django.log'
+
     STATIC_DOCS_GEANY_SOURCE_DIR = '/path/to/geany/source/or/just/empty'
     IRC_USER_LIST_FILE = '/path/to/irc/data/or/just/empty'
 


Modified: geany/settings.py
60 lines changed, 53 insertions(+), 7 deletions(-)
===================================================================
@@ -14,6 +14,7 @@
 
 from __future__ import absolute_import, unicode_literals
 
+import logging
 import os
 
 from django.utils.translation import ugettext_lazy as _
@@ -332,6 +333,7 @@
 # these middleware classes will be applied in the order given, and in the
 # response phase the middleware will be applied in reverse order.
 MIDDLEWARE = (
+    "log_request_id.middleware.RequestIDMiddleware",
     "mezzanine.core.middleware.UpdateCacheMiddleware",
 
     "django.middleware.security.SecurityMiddleware",
@@ -455,64 +457,108 @@
 #########################
 # LOGGING               #
 #########################
+logging.captureWarnings(True)  # log warnings using the logging subsystem
 LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
     'formatters': {
         'verbose': {
-            'format': '%(asctime)s %(name)s %(process)d %(threadName)s %(levelname)s %(message)s'
+            'format': '%(asctime)s %(name)s %(process)d %(threadName)s %(levelname)s [%(request_id)s] %(message)s'
         },
     },
     'filters': {
         'require_debug_false': {
             '()': 'django.utils.log.RequireDebugFalse'
-        }
+        },
+        'require_debug_true': {
+            '()': 'django.utils.log.RequireDebugTrue'
+        },
+        'request_id': {
+            '()': 'log_request_id.filters.RequestIDFilter'
+        },
     },
     'handlers': {
         'console': {
             'level': 'DEBUG',
             'class': 'logging.StreamHandler',
+            'filters': ['require_debug_true', 'request_id'],
             'formatter': 'verbose'
         },
         'mail_admins': {
             'level': 'WARN',
             'class': 'django.utils.log.AdminEmailHandler',
-            'filters': ['require_debug_false']
-        }
+            'filters': ['require_debug_false', 'request_id']
+        },
+        'file': {
+            'level': 'DEBUG',
+            'class': 'logging.FileHandler',
+            'filename': '/srv/django/log/geany_web.log',
+            'filters': ['request_id'],
+            'formatter': 'verbose'
+        },
     },
     'loggers': {
         '': {
-            'handlers': ['console', 'mail_admins'],
+            'handlers': ['console', 'file', 'mail_admins'],
             'level': 'DEBUG',
             'propagate': False,
         },
         'root': {
-            'handlers': ['console', 'mail_admins'],
+            'handlers': ['console', 'file', 'mail_admins'],
             'level': 'DEBUG',
             'propagate': False,
         },
         'py.warnings': {
+            'handlers': [],
             'propagate': True,
             'level': 'DEBUG',
         },
         'django': {
+            'handlers': [],
             'propagate': True,
             'level': 'DEBUG',
         },
-        'django.db': {
+        'django.db.backends': {
+            'handlers': [],
+            'level': 'INFO',
+            'propagate': True,
+        },
+        'django.db.backends.schema': {
+            'handlers': [],
+            'level': 'INFO',
+            'propagate': True,
+        },
+        'django.server': {
+            'handlers': [],
+            'level': 'INFO',
+            'propagate': True,
+        },
+        'django.security': {
+            'handlers': [],
             'level': 'INFO',
             'propagate': True,
         },
         'django.template': {
+            'handlers': [],
             'level': 'INFO',
             'propagate': True,
         },
         'MARKDOWN': {
+            'handlers': [],
+            'level': 'INFO',
+            'propagate': True,
+        },
+        'PIL': {
+            'handlers': [],
             'level': 'INFO',
             'propagate': True,
         },
     }
 }
+# add "request_id" attribute to log records (read from the header set by the webserver)
+GENERATE_REQUEST_ID_IF_NOT_IN_HEADER = False
+LOG_REQUEST_ID_HEADER = 'HTTP_REQUEST_ID'
+LOG_REQUESTS = False
 
 
 ###################


Modified: requirements.txt
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -4,6 +4,7 @@ mysqlclient
 django-compressor
 django-extensions
 django-honeypot
+django-log-request-id
 django-memcache-status
 mezzanine-pagedown
 pygments



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list