Files
69b22d37cd fix(studio): parse auth log event_message JSON for human-readable display DEBUG-111 (#46147)
## Problem

Auth log entries store metadata as a stringified JSON object in the
`event_message` field (e.g. `{"msg":"user signed
in","level":"info","status":200,"path":"/auth/v1/token"}`). The
dashboard was rendering this raw JSON string in the event message column
instead of a human-readable message.

## Fix

Added `parseAuthLogEventMessage` utility to `UnifiedLogs.utils.ts` that
JSON-parses the `event_message` value and extracts the `msg` field,
falling back to the `error` field, then the original raw string. The raw
string fallback ensures self-hosted versions with different log formats
continue to render without breaking between releases.

Applied in two places:
- `UnifiedLogs/components/Columns.tsx`: event_message column for
`log_type === 'auth'` rows
- `Settings/Logs/LogColumnRenderers/AuthColumnRenderer.tsx`:
event_message fallback when `metadata.msg` is absent

## How to test

1. Open the Supabase dashboard and navigate to Logs > Auth Logs
2. Verify that log entries show a plain message (e.g. "login attempt",
"invalid password") in the event message column instead of a raw JSON
string
3. Navigate to the unified logs view and filter to auth logs only
4. Verify the event message column shows the same human-readable
messages
5. Confirm that non-auth log types (edge, postgres, etc.) are unaffected
6. Expected result: auth log entries show readable messages; all other
log sources are unchanged

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Auth log messages now display in a more readable, human-friendly
format by intelligently parsing message data.

* **Refactor**
* Removed tooltip functionality from the pathname column in logs view
for streamlined display.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/46147?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-05-20 22:01:24 +07:00

37 lines
1.2 KiB
TypeScript

import { Column } from 'react-data-grid'
import { TimestampInfo } from 'ui-patterns/TimestampInfo'
import type { LogData } from '../Logs.types'
import { RowLayout, SeverityFormatter, TextFormatter } from '../LogsFormatters'
import { defaultRenderCell } from './DefaultPreviewColumnRenderer'
import { parseAuthLogEventMessage } from '@/components/interfaces/UnifiedLogs/UnifiedLogs.utils'
const columns: Column<LogData>[] = [
{
name: 'auth-first-column',
key: 'auth-first-column',
renderHeaderCell: () => null,
renderCell: (props) => {
if (!props.row.level) {
return defaultRenderCell(props)
}
return (
<RowLayout>
<TimestampInfo utcTimestamp={props.row.timestamp!} />
{props.row.level && <SeverityFormatter value={props.row.level as string} />}
<TextFormatter
className="w-full"
value={`${props.row.path ? props.row.path + ' | ' : ''}${
// not all log events have metadata.msg
(props.row.msg as string)?.trim() || parseAuthLogEventMessage(props.row.event_message)
}`}
/>
</RowLayout>
)
},
},
]
export default columns