diff --git a/rad/views.py b/rad/views.py index ae163dd6..5d7476eb 100644 --- a/rad/views.py +++ b/rad/views.py @@ -251,6 +251,7 @@ def logs_view(request): level_filter = request.GET.get("level", "").strip().upper() show_all = request.GET.get("all") == "1" raw_mode = request.GET.get("raw") == "1" + include_noise = request.GET.get("include_noise") == "1" if raw_mode: if not os.path.exists(log_file_path): @@ -352,7 +353,22 @@ def logs_view(request): filtered_entries = [] search_lower = search_query.lower() + noise_suppressed = 0 for entry in parsed_entries: + # Django template debug logs can be very noisy and usually do not indicate + # fatal issues. Hide them by default, with an explicit opt-in toggle. + is_template_debug_noise = ( + entry.get("level") == "DEBUG" + and entry.get("logger") == "django.template" + and ( + "Exception while resolving variable" in entry.get("message", "") + or any("VariableDoesNotExist" in d for d in entry.get("details", [])) + ) + ) + if is_template_debug_noise and not include_noise: + noise_suppressed += 1 + continue + if level_filter and entry["level"] != level_filter: continue @@ -387,6 +403,8 @@ def logs_view(request): "show_all": show_all, "limit": limit, "raw_url": f"{reverse('logs_view')}?raw=1", + "include_noise": include_noise, + "noise_suppressed": noise_suppressed, }, ) diff --git a/templates/logs_viewer.html b/templates/logs_viewer.html index e15cdd2c..98fd4ba6 100644 --- a/templates/logs_viewer.html +++ b/templates/logs_viewer.html @@ -70,6 +70,14 @@ {% endfor %} +
+
+ + +
+
{% if search_query or level_filter %} @@ -78,9 +86,9 @@
{% if show_all %} - Show recent only + Show recent only {% else %} - View all logs + View all logs {% endif %}
@@ -137,12 +145,16 @@ {% else %} Displaying most recent 500 entries (newest first). {% if total_entries > 500 %} - View all {{ total_entries }} entries. + View all {{ total_entries }} entries. {% endif %} {% endif %} {% if search_query %} Search found {{ entries|length }} matching entr{{ entries|length|pluralize:"y,ies" }}. {% endif %} + {% if noise_suppressed and not include_noise %} + Hidden {{ noise_suppressed }} noisy template debug entr{{ noise_suppressed|pluralize:"y,ies" }}. + Show them. + {% endif %}
{% else %}