const express = require('express'); const fs = require('fs'); const path = require('path'); const router = express.Router(); const LOG_FILE = path.join(__dirname, '..', 'compress.log'); // JSON API router.get('/api/logs', (req, res) => { const lines = parseInt(req.query.lines || '100', 10); const filter = (req.query.filter || '').toLowerCase(); let logLines = []; try { const content = fs.readFileSync(LOG_FILE, 'utf8'); logLines = content.trim().split('\n').filter(Boolean); } catch {} if (filter) logLines = logLines.filter(l => l.toLowerCase().includes(filter)); logLines = logLines.slice(-Math.min(lines, 1000)).reverse(); res.json({ lines: logLines, total: logLines.length }); }); // Server-rendered logs page router.get('/logs', (req, res) => { const lines = parseInt(req.query.lines || '100', 10); const filter = (req.query.filter || '').toLowerCase(); let logLines = []; try { const content = fs.readFileSync(LOG_FILE, 'utf8'); logLines = content.trim().split('\n').filter(Boolean); } catch {} if (filter) logLines = logLines.filter(l => l.toLowerCase().includes(filter)); logLines = logLines.slice(-Math.min(lines, 1000)).reverse(); const rendered = logLines.map(line => { const escaped = line.replace(/&/g, '&').replace(//g, '>'); return `
${escaped}
`; }).join('\n'); res.send(` Logs

Logs (${logLines.length})

${logLines.length ? rendered : '
No logs
'} `); }); module.exports = router;