#!/usr/bin/env node
// tools/log-server.js - Serveur simple pour visualiser les logs
const express = require('express');
const path = require('path');
const fs = require('fs');
const { exec } = require('child_process');
const app = express();
const PORT = 3001;
// Servir les fichiers statiques depuis la racine du projet
app.use(express.static(path.join(__dirname, '..')));
// Route pour servir les fichiers de log
app.use('/logs', express.static(path.join(__dirname, '..', 'logs')));
// Liste des fichiers de log disponibles
app.get('/api/logs', (req, res) => {
try {
const logsDir = path.join(__dirname, '..', 'logs');
const files = fs.readdirSync(logsDir)
.filter(file => file.endsWith('.log'))
.map(file => {
const filePath = path.join(logsDir, file);
const stats = fs.statSync(filePath);
return {
name: file,
size: stats.size,
modified: stats.mtime.toISOString(),
url: `http://localhost:${PORT}/tools/logs-viewer.html?file=${file}`
};
})
.sort((a, b) => new Date(b.modified) - new Date(a.modified));
res.json({ files });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Page d'accueil avec liste des logs
app.get('/', (req, res) => {
res.send(`
Log Viewer Server
📊 SEO Generator - Log Viewer
🔴 Logs en temps réel
Fichiers de log disponibles
Chargement...
`);
});
// Fonction pour ouvrir automatiquement le dernier log
function openLatestLog() {
try {
const logsDir = path.join(__dirname, '..', 'logs');
const files = fs.readdirSync(logsDir)
.filter(file => file.endsWith('.log'))
.map(file => {
const filePath = path.join(logsDir, file);
const stats = fs.statSync(filePath);
return {
name: file,
modified: stats.mtime
};
})
.sort((a, b) => b.modified - a.modified);
if (files.length > 0) {
const latestFile = files[0].name;
const url = `http://localhost:${PORT}/tools/logs-viewer.html?file=${latestFile}`;
// Ouvrir dans le navigateur par défaut
// Utiliser powershell Start-Process pour ouvrir l'URL dans le navigateur
const command = 'powershell.exe Start-Process';
exec(`${command} "${url}"`, (error) => {
if (error) {
console.log(`⚠️ Impossible d'ouvrir automatiquement: ${error.message}`);
console.log(`🌐 Ouvrez manuellement: ${url}`);
} else {
console.log(`🌐 Ouverture automatique du dernier log: ${latestFile}`);
}
});
} else {
console.log(`📊 Aucun log disponible - accédez à http://localhost:${PORT}/tools/logs-viewer.html`);
}
} catch (error) {
console.log(`⚠️ Erreur lors de l'ouverture: ${error.message}`);
}
}
app.listen(PORT, () => {
console.log(`🚀 Log server running at http://localhost:${PORT}`);
console.log(`📊 Logs viewer: http://localhost:${PORT}/tools/logs-viewer.html`);
console.log(`📁 Logs directory: ${path.join(__dirname, '..', 'logs')}`);
// Attendre un peu que le serveur soit prêt, puis ouvrir le navigateur
setTimeout(openLatestLog, 1000);
});