Skip to content

Commit

Permalink
add info in views logger
Browse files Browse the repository at this point in the history
  • Loading branch information
vincentporte committed Feb 25, 2025
1 parent 07e2e97 commit 9e5298f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
5 changes: 3 additions & 2 deletions config/settings/base.py
Original file line number Diff line number Diff line change
@@ -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()

Expand Down Expand Up @@ -312,7 +313,7 @@
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"json": {"()": JSONFormatter},
"json": {"()": CustomJSONFormatter},
},
"handlers": {
"console": {"class": "logging.StreamHandler", "formatter": "json"},
Expand Down
1 change: 1 addition & 0 deletions lacommunaute/forum_conversation/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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})

Check failure

Code scanning / CodeQL

Log Injection High

This log entry depends on a
user-provided value
.
return valid


Expand Down
24 changes: 24 additions & 0 deletions lacommunaute/utils/logging.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 9e5298f

Please sign in to comment.