feat: add TRACE log level support across UI
Some checks failed
CI / cleanup-branch (push) Has been skipped
CI / build (push) Failing after 34s
CI / docker (push) Has been skipped
CI / deploy (push) Has been skipped
CI / deploy-feature (push) Has been skipped

Add TRACE option to log forwarding level dropdowns (AppConfig,
AgentHealth), badge color mapping, and log filter ButtonGroups
on all pages that display application logs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-26 23:03:15 +01:00
parent d6c1f2c25b
commit 862a27b0b8
5 changed files with 10 additions and 3 deletions

View File

@@ -38,6 +38,7 @@ function logLevelColor(level?: string): BadgeColor {
case 'ERROR': return 'error'; case 'ERROR': return 'error';
case 'WARN': return 'warning'; case 'WARN': return 'warning';
case 'DEBUG': return 'running'; case 'DEBUG': return 'running';
case 'TRACE': return 'auto';
default: return 'success'; default: return 'success';
} }
} }
@@ -334,6 +335,7 @@ export default function AppConfigDetailPage() {
<option value="WARN">WARN</option> <option value="WARN">WARN</option>
<option value="INFO">INFO</option> <option value="INFO">INFO</option>
<option value="DEBUG">DEBUG</option> <option value="DEBUG">DEBUG</option>
<option value="TRACE">TRACE</option>
</select> </select>
) : ( ) : (
<Badge label={String(form.logForwardingLevel)} color={logLevelColor(form.logForwardingLevel as string)} variant="filled" /> <Badge label={String(form.logForwardingLevel)} color={logLevelColor(form.logForwardingLevel as string)} variant="filled" />

View File

@@ -30,7 +30,7 @@ function timeAgo(iso?: string): string {
function logLevelColor(level?: string): BadgeColor { function logLevelColor(level?: string): BadgeColor {
switch (level?.toUpperCase()) { switch (level?.toUpperCase()) {
case 'ERROR': return 'error'; case 'WARN': return 'warning'; case 'DEBUG': return 'running'; default: return 'success'; case 'ERROR': return 'error'; case 'WARN': return 'warning'; case 'DEBUG': return 'running'; case 'TRACE': return 'auto'; default: return 'success';
} }
} }
function engineLevelColor(level?: string): BadgeColor { function engineLevelColor(level?: string): BadgeColor {
@@ -241,7 +241,7 @@ function AppConfigDetail({ appId, onClose }: { appId: string; onClose: () => voi
<div className={styles.field}> <div className={styles.field}>
<span className={styles.fieldLabel}>Log Forwarding</span> <span className={styles.fieldLabel}>Log Forwarding</span>
{editing {editing
? <select className={styles.select} value={String(form.logForwardingLevel)} onChange={(e) => updateField('logForwardingLevel', e.target.value)}><option value="ERROR">ERROR</option><option value="WARN">WARN</option><option value="INFO">INFO</option><option value="DEBUG">DEBUG</option></select> ? <select className={styles.select} value={String(form.logForwardingLevel)} onChange={(e) => updateField('logForwardingLevel', e.target.value)}><option value="ERROR">ERROR</option><option value="WARN">WARN</option><option value="INFO">INFO</option><option value="DEBUG">DEBUG</option><option value="TRACE">TRACE</option></select>
: <Badge label={String(form.logForwardingLevel)} color={logLevelColor(form.logForwardingLevel as string)} variant="filled" />} : <Badge label={String(form.logForwardingLevel)} color={logLevelColor(form.logForwardingLevel as string)} variant="filled" />}
</div> </div>
<div className={styles.field}> <div className={styles.field}>

View File

@@ -226,6 +226,7 @@ const LOG_LEVEL_ITEMS: ButtonGroupItem[] = [
{ value: 'warn', label: 'Warn', color: 'var(--warning)' }, { value: 'warn', label: 'Warn', color: 'var(--warning)' },
{ value: 'info', label: 'Info', color: 'var(--success)' }, { value: 'info', label: 'Info', color: 'var(--success)' },
{ value: 'debug', label: 'Debug', color: 'var(--running)' }, { value: 'debug', label: 'Debug', color: 'var(--running)' },
{ value: 'trace', label: 'Trace', color: 'var(--text-muted)' },
]; ];
function mapLogLevel(level: string): LogEntry['level'] { function mapLogLevel(level: string): LogEntry['level'] {
@@ -535,6 +536,7 @@ export default function AgentHealth() {
<option value="WARN">WARN</option> <option value="WARN">WARN</option>
<option value="INFO">INFO</option> <option value="INFO">INFO</option>
<option value="DEBUG">DEBUG</option> <option value="DEBUG">DEBUG</option>
<option value="TRACE">TRACE</option>
</select> </select>
</div> </div>
<div className={styles.configField}> <div className={styles.configField}>
@@ -574,7 +576,8 @@ export default function AgentHealth() {
<Badge label={appConfig.logForwardingLevel ?? 'INFO'} color={ <Badge label={appConfig.logForwardingLevel ?? 'INFO'} color={
(appConfig.logForwardingLevel ?? 'INFO') === 'ERROR' ? 'error' (appConfig.logForwardingLevel ?? 'INFO') === 'ERROR' ? 'error'
: (appConfig.logForwardingLevel ?? 'INFO') === 'WARN' ? 'warning' : (appConfig.logForwardingLevel ?? 'INFO') === 'WARN' ? 'warning'
: (appConfig.logForwardingLevel ?? 'INFO') === 'DEBUG' ? 'running' : 'success' : (appConfig.logForwardingLevel ?? 'INFO') === 'DEBUG' ? 'running'
: (appConfig.logForwardingLevel ?? 'INFO') === 'TRACE' ? 'auto' : 'success'
} variant="filled" /> } variant="filled" />
</div> </div>
<div className={styles.configField}> <div className={styles.configField}>

View File

@@ -17,6 +17,7 @@ const LOG_LEVEL_ITEMS: ButtonGroupItem[] = [
{ value: 'warn', label: 'Warn', color: 'var(--warning)' }, { value: 'warn', label: 'Warn', color: 'var(--warning)' },
{ value: 'info', label: 'Info', color: 'var(--success)' }, { value: 'info', label: 'Info', color: 'var(--success)' },
{ value: 'debug', label: 'Debug', color: 'var(--running)' }, { value: 'debug', label: 'Debug', color: 'var(--running)' },
{ value: 'trace', label: 'Trace', color: 'var(--text-muted)' },
]; ];
function mapLogLevel(level: string): LogEntry['level'] { function mapLogLevel(level: string): LogEntry['level'] {

View File

@@ -22,6 +22,7 @@ const LOG_LEVEL_ITEMS: ButtonGroupItem[] = [
{ value: 'warn', label: 'Warn', color: 'var(--warning)' }, { value: 'warn', label: 'Warn', color: 'var(--warning)' },
{ value: 'info', label: 'Info', color: 'var(--success)' }, { value: 'info', label: 'Info', color: 'var(--success)' },
{ value: 'debug', label: 'Debug', color: 'var(--running)' }, { value: 'debug', label: 'Debug', color: 'var(--running)' },
{ value: 'trace', label: 'Trace', color: 'var(--text-muted)' },
] ]
function mapLogLevel(level: string): LogEntry['level'] { function mapLogLevel(level: string): LogEntry['level'] {