title: Logs description: Live log search with structured MDC extraction - user, session, conv, msg, traceId, spanId are injected into every line, anchoring each log to the trace it came from.

Logs tab - each line carries the MDC keys injected by the Logback pattern (user, sid, conv, msg, traceId, spanId), forming the bridge between log search and trace drill-down.
Purpose - live log search with structured MDC extraction. The Logback pattern injects user, sid, conv, msg, traceId, spanId MDC keys into every line emitted during a chat turn, so a log line is always anchored to the trace it came from.
ERROR + text search.0e9b1a980c1d?” - Text search the trace ID.spring.ai. or filter by logger pattern.Live tail of the application’s rolling log (the same stream the file appender writes). Up to 4 MB of recent lines is loaded; older lines are off-screen.
ALL, ERROR, WARN, INFO, DEBUG, TRACE.logThe Logback pattern emits each line with this shape:
2026-05-22 00:21:01.618 [reactor-http-...] INFO o.s.p.s.chat.ChatService [user= sid= conv=Chat-6af5b06e msg=4f37... traceId=0e9b1a980c1d spanId=d23f...] - generated user message id 4f37...
The Logs tab parses each line into: time · level · logger · user · session · conv · msg · traceId · spanId · message. Row colour:
#1e1f24)Double-click any row to open the Log line dialog - single-click leaves the text selectable, so you can drag across lines to copy them without a dialog interrupting. The header shows the line’s level and timestamp; the body lists the MDC fields parsed from the line - Logger, User, Session, Conv, UserMessageId, TraceId, SpanId (each rendered as - when the line did not carry that key) - followed by the full raw line in a scrollable block.
{ width=”900” }
The footer carries these actions:
traceId, the bridge from a single log line to the full span tree of the request that produced it. If the line has no traceId, it reports that instead.conv; opens that conversation thread.traceId