diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cbf7baae9900599b31717224320667cd078e2eaf..542508a839105541cd8921af698aee9468453668 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Fixed +~~~~~ + +* Celery's logging did not honour Django's logging level + `2.10.1`_ - 2022-07-24 ---------------------- diff --git a/aleksis/core/celery.py b/aleksis/core/celery.py index ab78cfb080ad1abc79f92e873641ef36c22432c9..492f7e79c9715a3f5477623cb5a925e4cdc4a850 100644 --- a/aleksis/core/celery.py +++ b/aleksis/core/celery.py @@ -1,10 +1,11 @@ +import logging import os from traceback import format_exception from django.conf import settings from celery import Celery -from celery.signals import task_failure +from celery.signals import setup_logging, task_failure from .util.core_helpers import get_site_preferences from .util.email import send_email @@ -35,3 +36,9 @@ def task_failure_notifier( "traceback": "".join(format_exception(type(exception), exception, traceback)), }, ) + + +@setup_logging.connect +def on_setup_logging(*args, **kwargs): + """Load Django's logging configuration when running inside Celery.""" + logging.config.dictConfig(settings.LOGGING) diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py index e52538c37dfd7f27b256a836201dd2865d61a0a2..6ff73399849d267eeca7f37057d46ac5c6b0c843 100644 --- a/aleksis/core/settings.py +++ b/aleksis/core/settings.py @@ -901,6 +901,12 @@ if not _settings.get("logging.disallowed_host", False): "handlers": ["null"], "propagate": False, } +# Configure logging explicitly for Celery +LOGGING["loggers"]["celery"] = { + "handlers": ["console"], + "level": _settings.get("logging.level", "WARNING"), + "propagate": False, +} # Rules and permissions