From 964e3c415048694f22fdd703891140362cb11b05 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Sun, 1 Mar 2026 15:11:41 -0600 Subject: [PATCH] feat: enhance request logging display with formatted status and duration Added helper functions to format status labels and execution durations in the requests dashboard. Updated the display logic to show "N/A" for zero status and improved duration representation in microseconds and milliseconds. This enhances the clarity and usability of the request logs for better monitoring and analysis. --- .../components/dashboard/requests/columns.tsx | 25 +++++++++++++++++-- .../dashboard/requests/requests-table.tsx | 16 ++++++++++-- apps/dokploy/components/ui/command.tsx | 4 +-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/apps/dokploy/components/dashboard/requests/columns.tsx b/apps/dokploy/components/dashboard/requests/columns.tsx index 3648261fb..997074fde 100644 --- a/apps/dokploy/components/dashboard/requests/columns.tsx +++ b/apps/dokploy/components/dashboard/requests/columns.tsx @@ -6,6 +6,9 @@ import { Button } from "@/components/ui/button"; import type { LogEntry } from "./show-requests"; export const getStatusColor = (status: number) => { + if (status === 0) { + return "secondary"; + } if (status >= 100 && status < 200) { return "outline"; } @@ -21,6 +24,24 @@ export const getStatusColor = (status: number) => { return "destructive"; }; +const formatStatusLabel = (status: number) => { + if (status === 0) { + return "N/A"; + } + return status; +}; + +const formatDuration = (nanos: number) => { + const ms = nanos / 1000000; + if (ms < 1) { + return `${(nanos / 1000).toFixed(2)} µs`; + } + if (ms < 1000) { + return `${ms.toFixed(2)} ms`; + } + return `${(ms / 1000).toFixed(2)} s`; +}; + export const columns: ColumnDef[] = [ { accessorKey: "level", @@ -59,10 +80,10 @@ export const columns: ColumnDef[] = [
- Status: {log.OriginStatus} + Status: {formatStatusLabel(log.OriginStatus)} - Exec Time: {`${log.Duration / 1000000000}s`} + Exec Time: {formatDuration(log.Duration)} IP: {log.ClientAddr}
diff --git a/apps/dokploy/components/dashboard/requests/requests-table.tsx b/apps/dokploy/components/dashboard/requests/requests-table.tsx index 45a531324..e804b065b 100644 --- a/apps/dokploy/components/dashboard/requests/requests-table.tsx +++ b/apps/dokploy/components/dashboard/requests/requests-table.tsx @@ -152,7 +152,15 @@ export const RequestsTable = ({ dateRange }: RequestsTableProps) => { return JSON.stringify(value, null, 2); } if (key === "Duration" || key === "OriginDuration" || key === "Overhead") { - return `${value / 1000000000} s`; + const nanos = Number(value); + const ms = nanos / 1000000; + if (ms < 1) { + return `${(nanos / 1000).toFixed(2)} µs`; + } + if (ms < 1000) { + return `${ms.toFixed(2)} ms`; + } + return `${(ms / 1000).toFixed(2)} s`; } if (key === "level") { return {value}; @@ -161,7 +169,11 @@ export const RequestsTable = ({ dateRange }: RequestsTableProps) => { return {value}; } if (key === "DownstreamStatus" || key === "OriginStatus") { - return {value}; + const num = Number(value); + if (num === 0) { + return N/A; + } + return {value}; } return value; }; diff --git a/apps/dokploy/components/ui/command.tsx b/apps/dokploy/components/ui/command.tsx index ffaff8685..409823c56 100644 --- a/apps/dokploy/components/ui/command.tsx +++ b/apps/dokploy/components/ui/command.tsx @@ -13,7 +13,7 @@ const Command = React.forwardRef<