diff --git a/rad/views.py b/rad/views.py index 1493ab87..ae163dd6 100644 --- a/rad/views.py +++ b/rad/views.py @@ -250,6 +250,27 @@ def logs_view(request): search_query = request.GET.get("q", "").strip() level_filter = request.GET.get("level", "").strip().upper() show_all = request.GET.get("all") == "1" + raw_mode = request.GET.get("raw") == "1" + + if raw_mode: + if not os.path.exists(log_file_path): + return HttpResponse( + f"Log file not found at {log_file_path}\n", + content_type="text/plain; charset=utf-8", + status=404, + ) + + try: + with open(log_file_path, "r", encoding="utf-8", errors="ignore") as f: + raw_content = f.read() + except Exception as e: + return HttpResponse( + f"Error reading log file: {str(e)}\n", + content_type="text/plain; charset=utf-8", + status=500, + ) + + return HttpResponse(raw_content, content_type="text/plain; charset=utf-8") log_header_re = re.compile( r"^\[(?P[^\]]+)\]\s+(?P[A-Z]+)\s+\[(?P[^:\]]+):(?P\d+)\]\s+(?P.*)$" @@ -365,6 +386,7 @@ def logs_view(request): "log_file_path": log_file_path, "show_all": show_all, "limit": limit, + "raw_url": f"{reverse('logs_view')}?raw=1", }, ) diff --git a/templates/logs_viewer.html b/templates/logs_viewer.html index 7f093bdf..61429ec7 100644 --- a/templates/logs_viewer.html +++ b/templates/logs_viewer.html @@ -80,6 +80,9 @@ View all logs {% endif %} +