Improved logging formatting (#1905)

This commit is contained in:
daveoconnor
2025-08-29 15:58:49 -07:00
committed by GitHub
parent 4b8b811bfc
commit 8294d3fdb7
3 changed files with 54 additions and 2 deletions

View File

@@ -1,8 +1,11 @@
import os
import datetime
from logging.config import dictConfig
from celery import Celery
from celery.schedules import crontab
from celery.signals import setup_logging
from pythonjsonlogger import jsonlogger
# set the default Django settings module for the 'celery' program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
@@ -19,6 +22,40 @@ app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
@setup_logging.connect
def config_loggers(*args, **kwags):
"""Configure Celery logging with JSON default, readable for local development."""
from django.conf import settings
# production
json_formatter = {
"()": jsonlogger.JsonFormatter,
"format": "%(name)s %(levelname)s %(filename)s:%(lineno)d %(message)s",
}
# local development
text_formatter = {
"format": "%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
}
dictConfig(
{
"version": 1,
"disable_existing_loggers": False,
"formatters": {"json": json_formatter, "text": text_formatter},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "text" if settings.LOCAL_DEVELOPMENT else "json",
},
},
"root": {
"level": "INFO",
"handlers": ["console"],
},
}
)
@app.task(bind=True)
def debug_task(self):
print(f"Request: {self.request!r}")

View File

@@ -251,7 +251,19 @@ root.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(jsonlogger.JsonFormatter())
handler.setFormatter(
jsonlogger.JsonFormatter(
"%(name)s %(levelname)s %(filename)s:%(lineno)d %(message)s"
)
)
if LOCAL_DEVELOPMENT:
handler.setFormatter(
logging.Formatter(
"%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
)
root.addHandler(handler)