diff --git a/config/settings/base.py b/config/settings/base.py index 9bde2d49..85d312af 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -1,9 +1,10 @@ import os from dotenv import load_dotenv -from json_log_formatter import JSONFormatter from machina import MACHINA_MAIN_STATIC_DIR, MACHINA_MAIN_TEMPLATE_DIR +from lacommunaute.utils.logging import CustomJSONFormatter + load_dotenv() @@ -312,7 +313,7 @@ "version": 1, "disable_existing_loggers": False, "formatters": { - "json": {"()": JSONFormatter}, + "json": {"()": CustomJSONFormatter}, }, "handlers": { "console": {"class": "logging.StreamHandler", "formatter": "json"}, diff --git a/lacommunaute/forum_conversation/views.py b/lacommunaute/forum_conversation/views.py index e4f4f83c..d1f0f1c1 100644 --- a/lacommunaute/forum_conversation/views.py +++ b/lacommunaute/forum_conversation/views.py @@ -26,6 +26,7 @@ def form_valid(self, *args, **kwargs): valid = super().form_valid(*args, **kwargs) track_handler.mark_topic_read(self.forum_post.topic, self.request.user) + logger.info("Updated post, or created/updated topic", extra={"request": self.request}) return valid diff --git a/lacommunaute/utils/logging.py b/lacommunaute/utils/logging.py new file mode 100644 index 00000000..cb05f04b --- /dev/null +++ b/lacommunaute/utils/logging.py @@ -0,0 +1,24 @@ +from logging import getLogger + +from json_log_formatter import JSONFormatter + + +logger = getLogger("lacommunaute") + + +class CustomJSONFormatter(JSONFormatter): + def json_record(self, message, extra, record): + extra["logger_name"] = record.name + + if "request" in extra: + request = extra["request"] + extra["request"] = { + "view_name": request.resolver_match.view_name, + "kwargs": request.resolver_match.kwargs, + "method": request.method, + "user": request.user.id if request.user.is_authenticated else None, + "anonymous_key": request.user.forum_key, + "session_key": request.session.session_key, + } + + return super().json_record(message, extra, record)