diff --git a/webui/src/pages/Logs.tsx b/webui/src/pages/Logs.tsx index 76b487e..8ec6702 100644 --- a/webui/src/pages/Logs.tsx +++ b/webui/src/pages/Logs.tsx @@ -9,6 +9,7 @@ const Logs: React.FC = () => { const { q } = useAppContext(); const [logs, setLogs] = useState([]); const [isStreaming, setIsStreaming] = useState(true); + const [showRaw, setShowRaw] = useState(false); const logEndRef = useRef(null); const abortControllerRef = useRef(null); @@ -86,6 +87,7 @@ const Logs: React.FC = () => { time: typeof v?.time === 'string' && v.time ? v.time : new Date().toISOString(), level: typeof v?.level === 'string' && v.level ? v.level : 'INFO', msg: typeof v?.msg === 'string' ? v.msg : JSON.stringify(v), + __raw: JSON.stringify(v), ...v, }); @@ -102,6 +104,14 @@ const Logs: React.FC = () => { } }; + const renderReadable = (log: LogEntry) => { + const keys = Object.keys(log).filter(k => !['time', 'level', 'msg', '__raw'].includes(k)); + const core = `${log.msg}`; + if (keys.length === 0) return core; + const extra = keys.map(k => `${k}=${JSON.stringify((log as any)[k])}`).join(' ยท '); + return `${core} | ${extra}`; + }; + const getLevelColor = (level: string) => { switch ((level || 'INFO').toUpperCase()) { case 'ERROR': return 'text-red-400'; @@ -124,6 +134,12 @@ const Logs: React.FC = () => {
+