From 53bed8292631c668a23a24ce7d638a2e8b017771 Mon Sep 17 00:00:00 2001 From: vincent porte Date: Tue, 25 Feb 2025 20:14:27 +0100 Subject: [PATCH] add info in views logger (tests in progress) --- config/settings/base.py | 5 +++-- lacommunaute/forum_conversation/views.py | 1 + lacommunaute/utils/loggers.py | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 lacommunaute/utils/loggers.py diff --git a/config/settings/base.py b/config/settings/base.py index 9bde2d49..4b1e5921 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.loggers 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..101d9b4e 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("form is valid", extra={"context": self}) return valid diff --git a/lacommunaute/utils/loggers.py b/lacommunaute/utils/loggers.py new file mode 100644 index 00000000..7cafbdde --- /dev/null +++ b/lacommunaute/utils/loggers.py @@ -0,0 +1,19 @@ +from json_log_formatter import JSONFormatter + + +class CustomJsonFormatter(JSONFormatter): + def json_record(self, message, extra, record): + extra["logger_name"] = record.name + + if "context" in extra: + context = extra.pop("context") + if hasattr(context, "request"): + extra = extra | { + "view": context.request.resolver_match.view_name, + "kwargs": context.request.resolver_match.kwargs, + "method": context.request.method, + "user_id": context.request.user.id if context.request.user.is_authenticated else None, + "session_key": context.request.session.session_key, + } + + return super().json_record(message, extra, record)