'use client'; import { useEffect, useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { AlertTriangle, Trash2 } from 'lucide-react'; interface ErrorLog { id: string; level: string; source: string; message: string; metadata: Record; created: string; } export default function ErrorLogPage() { const [errors, setErrors] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { fetchErrors(); }, []); async function fetchErrors() { try { const response = await fetch('/api/error-logs?limit=50'); if (response.ok) { const data = await response.json(); setErrors(data.items || []); } } catch (error) { console.error('Failed to fetch error logs:', error); } finally { setLoading(false); } } async function clearErrors() { try { const response = await fetch('/api/error-logs', { method: 'DELETE' }); if (response.ok) { setErrors([]); } } catch (error) { console.error('Failed to clear error logs:', error); } } if (loading) { return ( Error Log Loading... ); } return (
Error Log Recent errors from the application (auto-purged after 30 days)
{errors.length > 0 && ( )}
{errors.length === 0 ? (

No errors logged

) : (
{errors.map((error) => (
{new Date(error.created).toLocaleString()}

{error.message}

{error.metadata && Object.keys(error.metadata).length > 0 && (
Details
                        {JSON.stringify(error.metadata, null, 2)}
                      
)}
))}
)}
); }