81 lines
2.8 KiB
JavaScript
81 lines
2.8 KiB
JavaScript
/**
|
|
* Example backend endpoint for receiving frontend logs
|
|
* Add this to your Express server (server/index.mjs)
|
|
*/
|
|
|
|
// Add to your Express app:
|
|
/*
|
|
app.post('/api/log', express.json(), (req, res) => {
|
|
const logs = Array.isArray(req.body) ? req.body : [req.body];
|
|
|
|
logs.forEach(log => {
|
|
const timestamp = new Date(log.ts).toLocaleString();
|
|
const event = log.event.padEnd(30);
|
|
const data = JSON.stringify(log.data || {});
|
|
|
|
console.log(`[${timestamp}] ${event} ${data}`);
|
|
|
|
// Optional: Store in database, send to monitoring service, etc.
|
|
// await db.logs.insert(log);
|
|
// await monitoring.track(log);
|
|
});
|
|
|
|
res.json({ ok: true });
|
|
});
|
|
*/
|
|
|
|
// Standalone example for testing:
|
|
import express from 'express';
|
|
import cors from 'cors';
|
|
|
|
const app = express();
|
|
const PORT = 3001;
|
|
|
|
app.use(cors());
|
|
app.use(express.json());
|
|
|
|
app.post('/api/log', (req, res) => {
|
|
const logs = Array.isArray(req.body) ? req.body : [req.body];
|
|
|
|
console.log('\n=== FRONTEND LOGS RECEIVED ===');
|
|
logs.forEach(log => {
|
|
const timestamp = new Date(log.ts).toLocaleString();
|
|
const event = log.event.padEnd(30);
|
|
const route = log.context?.route || 'N/A';
|
|
const data = JSON.stringify(log.data || {}, null, 2);
|
|
|
|
console.log(`
|
|
┌─────────────────────────────────────────────────────────────
|
|
│ Event: ${log.event}
|
|
│ Time: ${timestamp}
|
|
│ Session: ${log.sessionId}
|
|
│ Route: ${route}
|
|
│ Theme: ${log.context?.theme || 'N/A'}
|
|
│ Data: ${data}
|
|
└─────────────────────────────────────────────────────────────
|
|
`);
|
|
});
|
|
|
|
res.json({ ok: true });
|
|
});
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`
|
|
╔════════════════════════════════════════════════════════════╗
|
|
║ Frontend Logging Test Server ║
|
|
║ Listening on http://localhost:${PORT} ║
|
|
║ ║
|
|
║ Endpoint: POST /api/log ║
|
|
║ ║
|
|
║ Configure ObsiViewer to use: ║
|
|
║ endpoint: 'http://localhost:${PORT}/api/log' ║
|
|
╚════════════════════════════════════════════════════════════╝
|
|
`);
|
|
});
|
|
|
|
// Graceful shutdown
|
|
process.on('SIGINT', () => {
|
|
console.log('\n\nShutting down logging server...');
|
|
process.exit(0);
|
|
});
|