mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 06:51:12 -05:00
Fix error logging and metadata
This commit is contained in:
134
docs/ERROR_LOGGING_FIX_COMPLETE.md
Normal file
134
docs/ERROR_LOGGING_FIX_COMPLETE.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# Error Logging Fix - Complete ✅
|
||||
|
||||
**Date:** 2025-11-03
|
||||
**Status:** COMPLETE
|
||||
|
||||
## Problem Summary
|
||||
The error logging system had critical database schema mismatches that prevented proper error tracking:
|
||||
1. Missing `timezone` and `referrer` columns in `request_metadata` table
|
||||
2. Application code expected breadcrumbs to be pre-fetched but wasn't passing environment data
|
||||
3. Database function signature didn't match application calls
|
||||
|
||||
## Solution Implemented
|
||||
|
||||
### 1. Database Schema Fix (Migration)
|
||||
```sql
|
||||
-- Added missing environment columns
|
||||
ALTER TABLE public.request_metadata
|
||||
ADD COLUMN IF NOT EXISTS timezone TEXT,
|
||||
ADD COLUMN IF NOT EXISTS referrer TEXT;
|
||||
|
||||
-- Added index for better breadcrumbs performance
|
||||
CREATE INDEX IF NOT EXISTS idx_request_breadcrumbs_request_id
|
||||
ON public.request_breadcrumbs(request_id);
|
||||
|
||||
-- Updated log_request_metadata function
|
||||
-- Now accepts p_timezone and p_referrer parameters
|
||||
```
|
||||
|
||||
### 2. Application Code Updates
|
||||
|
||||
#### `src/lib/requestTracking.ts`
|
||||
- ✅ Added `captureEnvironmentContext()` import
|
||||
- ✅ Captures environment context on error
|
||||
- ✅ Passes `timezone` and `referrer` to database function
|
||||
- ✅ Updated `RequestMetadata` interface with new fields
|
||||
|
||||
#### `src/components/admin/ErrorDetailsModal.tsx`
|
||||
- ✅ Added missing imports (`useState`, `useEffect`, `supabase`)
|
||||
- ✅ Simplified to use breadcrumbs from parent query (already fetched)
|
||||
- ✅ Displays timezone and referrer in Environment tab
|
||||
- ✅ Removed unused state management
|
||||
|
||||
#### `src/pages/admin/ErrorMonitoring.tsx`
|
||||
- ✅ Already correctly fetches breadcrumbs from `request_breadcrumbs` table
|
||||
- ✅ No changes needed - working as expected
|
||||
|
||||
## Architecture: Full Relational Structure
|
||||
|
||||
Following the project's **"NO JSON OR JSONB"** policy:
|
||||
- ✅ Breadcrumbs stored in separate `request_breadcrumbs` table
|
||||
- ✅ Environment data stored as direct columns (`timezone`, `referrer`, `user_agent`, etc.)
|
||||
- ✅ No JSONB in active data structures
|
||||
- ✅ Legacy `p_environment_context` parameter kept for backward compatibility (receives empty string)
|
||||
|
||||
## What Now Works
|
||||
|
||||
### Error Capture
|
||||
```typescript
|
||||
try {
|
||||
// Your code
|
||||
} catch (error) {
|
||||
handleError(error, {
|
||||
action: 'Action Name',
|
||||
userId: user?.id,
|
||||
metadata: { /* context */ }
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
**Captures:**
|
||||
- ✅ Full stack trace (up to 5000 chars)
|
||||
- ✅ Last 10 breadcrumbs (navigation, actions, API calls)
|
||||
- ✅ Environment context (timezone, referrer, user agent, client version)
|
||||
- ✅ Request metadata (endpoint, method, duration)
|
||||
- ✅ User context (user ID if authenticated)
|
||||
|
||||
### Error Monitoring Dashboard (`/admin/error-monitoring`)
|
||||
- ✅ Lists recent errors with filtering
|
||||
- ✅ Search by request ID, endpoint, or message
|
||||
- ✅ Date range filtering (1h, 24h, 7d, 30d)
|
||||
- ✅ Error type filtering
|
||||
- ✅ Auto-refresh every 30 seconds
|
||||
- ✅ Error analytics overview
|
||||
|
||||
### Error Details Modal
|
||||
- ✅ **Overview Tab:** Request ID, timestamp, endpoint, method, status, duration, user
|
||||
- ✅ **Stack Trace Tab:** Full error stack (if available)
|
||||
- ✅ **Breadcrumbs Tab:** User actions leading to error (sorted by sequence)
|
||||
- ✅ **Environment Tab:** Timezone, referrer, user agent, client version, IP hash
|
||||
- ✅ Copy error ID (short reference for support)
|
||||
- ✅ Copy full error report (for sharing with devs)
|
||||
|
||||
### Error Lookup (`/admin/error-lookup`)
|
||||
- ✅ Quick search by short reference ID (first 8 chars)
|
||||
- ✅ Direct link from user-facing error messages
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
- [x] Database migration applied successfully
|
||||
- [x] New columns exist in `request_metadata` table
|
||||
- [x] `log_request_metadata` function accepts new parameters
|
||||
- [x] Application code compiles without errors
|
||||
- [ ] **Manual Test Required:** Trigger an error and verify:
|
||||
- [ ] Error appears in `/admin/error-monitoring`
|
||||
- [ ] Click error shows all tabs with data
|
||||
- [ ] Breadcrumbs display correctly
|
||||
- [ ] Environment tab shows timezone and referrer
|
||||
- [ ] Copy functions work
|
||||
|
||||
## Performance Notes
|
||||
|
||||
- Breadcrumbs query is indexed (`idx_request_breadcrumbs_request_id`)
|
||||
- Breadcrumbs limited to last 10 per request (prevents memory bloat)
|
||||
- Error stack traces limited to 5000 chars
|
||||
- Fire-and-forget logging (doesn't block user operations)
|
||||
|
||||
## Related Files
|
||||
|
||||
- `src/lib/requestTracking.ts` - Request/error tracking service
|
||||
- `src/lib/errorHandler.ts` - Error handling utilities
|
||||
- `src/lib/errorBreadcrumbs.ts` - Breadcrumb capture system
|
||||
- `src/lib/environmentContext.ts` - Environment data capture
|
||||
- `src/pages/admin/ErrorMonitoring.tsx` - Error monitoring dashboard
|
||||
- `src/components/admin/ErrorDetailsModal.tsx` - Error details modal
|
||||
- `docs/ERROR_TRACKING.md` - Full system documentation
|
||||
- `docs/LOGGING_POLICY.md` - Logging policy and best practices
|
||||
|
||||
## Next Steps (Optional Enhancements)
|
||||
|
||||
1. Add error trending graphs (error count over time)
|
||||
2. Add error grouping by stack trace similarity
|
||||
3. Add user notification when their error is resolved
|
||||
4. Add automatic error assignment to developers
|
||||
5. Add integration with external monitoring (Sentry, etc.)
|
||||
Reference in New Issue
Block a user