diff --git a/server/config/filters.py b/server/config/filters.py index 006eb316..2a9861aa 100644 --- a/server/config/filters.py +++ b/server/config/filters.py @@ -7,5 +7,6 @@ class IgnoreMissingBuild503Errors(logging.Filter): """ def filter(self, record): - status_code = getattr(record, "status_code", None) - return status_code != 503 + # Message is of the format `"GET /download_check/.../ HTTP/1.1" 503 125` + message = record.getMessage() + return "download_check" not in message and " 503 " not in message diff --git a/server/config/settings.py b/server/config/settings.py index 4137aba7..c3246e2b 100644 --- a/server/config/settings.py +++ b/server/config/settings.py @@ -8,6 +8,7 @@ from pathlib import Path from dotenv import load_dotenv +from .filters import IgnoreMissingBuild503Errors from core.exceptions import UploadException, BuildMirrorException load_dotenv() @@ -161,16 +162,51 @@ "disable_existing_loggers": False, "filters": { "ignore_missing_build_503_errors": { - "()": "config.filters.IgnoreMissingBuild503Errors", + "()": IgnoreMissingBuild503Errors, + }, + "require_debug_false": { + "()": "django.utils.log.RequireDebugFalse", + }, + "require_debug_true": { + "()": "django.utils.log.RequireDebugTrue", + }, + }, + "formatters": { + "django.server": { + "()": "django.utils.log.ServerFormatter", + "format": "---- [{server_time}] {message}", + "style": "{", } }, "handlers": { + "console": { + "level": "INFO", + "filters": ["require_debug_true", "ignore_missing_build_503_errors"], + "class": "logging.StreamHandler", + }, + "django.server": { + "level": "INFO", + "filters": ["ignore_missing_build_503_errors"], + "class": "logging.StreamHandler", + "formatter": "django.server", + }, "mail_admins": { "level": "ERROR", - "filters": ["ignore_missing_build_503_errors"], + "filters": ["require_debug_false", "ignore_missing_build_503_errors"], "class": "django.utils.log.AdminEmailHandler", }, }, + "loggers": { + "django": { + "handlers": ["console", "mail_admins"], + "level": "INFO", + }, + "django.server": { + "handlers": ["django.server"], + "level": "INFO", + "propagate": False, + }, + }, }