From 759c617528152a9287af9f91bbb240e26f61c5e9 Mon Sep 17 00:00:00 2001 From: Michael Barton Date: Wed, 5 Feb 2025 16:35:45 +0000 Subject: [PATCH 1/2] Email admins on error --- envs/example.env | 2 ++ project/logging_settings.py | 19 ++++++++++++++----- project/settings.py | 5 +++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/envs/example.env b/envs/example.env index 9413c68b..3ede1674 100644 --- a/envs/example.env +++ b/envs/example.env @@ -48,3 +48,5 @@ LOCAL_DEV_ADMIN_PASSWORD="devp@ssword12345" EMAIL_DEFAULT_FROM_EMAIL = "npda@rcpch.ac.uk" +# Error reporting when DEBUG=False. Format: :,:... +# ADMINS="admin:admin@rcpch.ac.uk" \ No newline at end of file diff --git a/project/logging_settings.py b/project/logging_settings.py index f781c02c..74d9d5f8 100644 --- a/project/logging_settings.py +++ b/project/logging_settings.py @@ -14,7 +14,7 @@ # Define the default django logger settings django_loggers = { logger_name: { - "handlers": ["django_console", "npda_logfile"], + "handlers": ["django_console", "npda_logfile", "mail_admins"], "level": CONSOLE_DJANGO_LOG_LEVEL, "propagate": False, "formatter": "simple_django", @@ -32,7 +32,11 @@ LOGGING = { "version": 1, "disable_existing_loggers": False, - "filters": {}, + "filters": { + "require_debug_false": { + "()": "django.utils.log.RequireDebugFalse", + }, + }, "formatters": { "django.server": { "()": "django.utils.log.ServerFormatter", @@ -43,6 +47,11 @@ "file": { "format": "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", }, + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", + }, "verbose": { "()": "colorlog.ColoredFormatter", "format": "%(log_color)s[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(bold_white)s%(message)s", @@ -103,17 +112,17 @@ }, "loggers": { "django": { - "handlers": ["django_console", "npda_logfile"], + "handlers": ["django_console", "npda_logfile", "mail_admins"], "level": CONSOLE_DJANGO_LOG_LEVEL, }, **django_loggers, # this injects the default django logger settings defined above "project": { - "handlers": ["npda_console", "npda_logfile"], + "handlers": ["npda_console", "npda_logfile", "mail_admins"], "propagate": False, "level": CONSOLE_LOG_LEVEL, }, "two_factor": { - "handlers": ["npda_console", "npda_logfile"], + "handlers": ["npda_console", "npda_logfile", "mail_admins"], }, }, } diff --git a/project/settings.py b/project/settings.py index 9876b835..d831cca2 100644 --- a/project/settings.py +++ b/project/settings.py @@ -271,6 +271,7 @@ # EMAIL SETTINGS (SMTP) DEFAULT_FROM_EMAIL = os.environ.get("EMAIL_DEFAULT_FROM_EMAIL") +SERVER_EMAIL = os.environ.get("EMAIL_DEFAULT_FROM_EMAIL") SMTP_EMAIL_ENABLED = os.getenv("SMTP_EMAIL_ENABLED", "False") == "True" logger.info("SMTP_EMAIL_ENABLED: %s", SMTP_EMAIL_ENABLED) if SMTP_EMAIL_ENABLED is True: @@ -291,6 +292,10 @@ SITE_CONTACT_EMAIL = os.environ.get("SITE_CONTACT_EMAIL") +ADMINS = os.environ.get("ADMINS", '') +if ADMINS: + ADMINS = [e.split(":") for e in ADMINS.split(",")] + # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ From 55f67c7b95364f9b8fdad293f13e65338533b784 Mon Sep 17 00:00:00 2001 From: Michael Barton Date: Thu, 6 Feb 2025 10:57:33 +0000 Subject: [PATCH 2/2] whoops that was in the wrong place --- project/logging_settings.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/project/logging_settings.py b/project/logging_settings.py index 74d9d5f8..5fa5f358 100644 --- a/project/logging_settings.py +++ b/project/logging_settings.py @@ -47,11 +47,6 @@ "file": { "format": "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", }, - "mail_admins": { - "level": "ERROR", - "filters": ["require_debug_false"], - "class": "django.utils.log.AdminEmailHandler", - }, "verbose": { "()": "colorlog.ColoredFormatter", "format": "%(log_color)s[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(bold_white)s%(message)s", @@ -109,6 +104,11 @@ "backupCount": 10, "formatter": "file", }, + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", + }, }, "loggers": { "django": {