import React from "react"; import { JSONLogLine, Span } from "../api-types"; const SpanFields: React.FC<{ span: Span }> = ({ span }) => { let fields = Object.entries(span).filter(([name, value]) => name != "name"); if (fields.length == 0) { return null; } return ( <> {"{"} {fields .map(([name, value]) => { return ( {name} = {value} ); }) .reduce((prev, curr) => ( <> {prev}, {curr} ))} {"}"} ); }; const LogSpan: React.FC<{ span: Span }> = ({ span }) => ( <> {span.name} : ); const Fields: React.FC<{ fields: JSONLogLine["fields"] }> = ({ fields }) => ( {fields.message} {Object.entries(fields) .filter(([key, value]) => key != "message") .map(([key, value]) => ( {key}={value} ))} ); export const LogLine: React.FC<{ line: JSONLogLine }> = React.memo( ({ line }) => { const parsed = line; const classNameByLevel = (level: string) => { switch (level) { case "DEBUG": return "text-blue-500"; case "INFO": return "text-green-500"; case "WARN": return "text-amber-500"; case "ERROR": return "text-red-500"; default: return "text-slate-500"; } }; return (

{parsed.timestamp} {parsed.level} {parsed.spans?.map((span, i) => )} {parsed.target}

); } );