- Archiver 131 .md dans docs/archive/root-md/ - Archiver 22 .json dans docs/archive/root-json/ - Conserver 7 .md utiles (README, CONTRIBUTING, CHANGELOG, etc.) - Conserver package.json, package-lock.json, turbo.json - Ajouter README d'index dans chaque archive
6.1 KiB
6.1 KiB
✅ Configuration Finale - Système de Logs Veza
📁 Structure Complète des Fichiers de Logs
Tous les logs sont enregistrés dans /var/log/veza/ avec le format suivant :
- Fichier principal :
module.log(tous les logs : DEBUG, INFO, WARN, ERROR) - Fichier d'erreurs :
module-error.log(uniquement ERROR)
Liste Complète des Fichiers
/var/log/veza/
├── backend-api.log ✅ Backend Go - Tous les logs
├── backend-api-error.log ✅ Backend Go - Erreurs uniquement
├── frontend.log ✅ Frontend React - Tous les logs (via endpoint)
├── frontend-error.log ✅ Frontend React - Erreurs uniquement
├── chat.log ✅ Chat Server (Rust) - Tous les logs
├── chat-error.log ✅ Chat Server (Rust) - Erreurs uniquement
├── stream.log ✅ Stream Server (Rust) - Tous les logs
├── stream-error.log ✅ Stream Server (Rust) - Erreurs uniquement
├── db.log ✅ Database - Tous les logs
├── db-error.log ✅ Database - Erreurs uniquement
├── redis.log ✅ Redis - Tous les logs
├── redis-error.log ✅ Redis - Erreurs uniquement
├── rabbitmq.log ✅ RabbitMQ - Tous les logs
└── rabbitmq-error.log ✅ RabbitMQ - Erreurs uniquement
Note : Les fichiers -error.log sont créés automatiquement uniquement lorsqu'une erreur est loggée.
🔧 Configuration par Module
Backend Go (veza-backend-api)
Fichiers modifiés :
internal/logging/logger.go- FonctionNewLoggerWithFileRotation()internal/config/config.go- Configuration des loggers par moduleinternal/handlers/frontend_log_handler.go- Endpoint pour logs frontendinternal/api/router.go- Route/api/v1/logs/frontend
Loggers configurés :
// Backend API
logging.NewLoggerWithFileRotation(config.LogDir, "backend-api", env, logLevel)
// → backend-api.log / backend-api-error.log
// Database
logging.NewLoggerWithFileRotation(config.LogDir, "db", env, logLevel)
// → db.log / db-error.log
// Redis
logging.NewLoggerWithFileRotation(config.LogDir, "redis", env, logLevel)
// → redis.log / redis-error.log
// RabbitMQ
logging.NewLoggerWithFileRotation(config.LogDir, "rabbitmq", env, logLevel)
// → rabbitmq.log / rabbitmq-error.log
// Frontend (via endpoint)
logging.NewLoggerWithFileRotation(logDir, "frontend", cfg.Env, cfg.LogLevel)
// → frontend.log / frontend-error.log
Chat Server (veza-chat-server)
Fichier modifié :
src/main.rs- Configuration avecLOG_DIR
Configuration :
let log_dir = std::env::var("LOG_DIR").unwrap_or_else(|_| "/var/log/veza".to_string());
let log_file = format!("{}/chat.log", log_dir);
// → chat.log / chat-error.log (géré par veza-common)
Stream Server (veza-stream-server)
Fichier modifié :
src/main.rs- Configuration avecLOG_DIR
Configuration :
let log_dir = std::env::var("LOG_DIR").unwrap_or_else(|_| "/var/log/veza".to_string());
let log_file = format!("{}/stream.log", log_dir);
// → stream.log / stream-error.log (géré par veza-common)
Frontend (apps/web)
Fichier modifié :
src/utils/logger.ts- Envoi automatique vers endpoint backend
Configuration :
// Envoi automatique vers /api/v1/logs/frontend
const logEndpoint = import.meta.env.VITE_LOG_ENDPOINT ||
(import.meta.env.VITE_API_URL ? `${import.meta.env.VITE_API_URL}/api/v1/logs/frontend` : null);
Common Library (veza-common)
Fichiers modifiés :
src/logging.rs- Support fichiers d'erreurs séparés avecLevelFilter::ERRORCargo.toml- Dépendances mises à jour
Fonctionnalité :
- Crée automatiquement
module.logetmodule-error.log - Filtre les erreurs avec
LevelFilter::ERROR
⚙️ Configuration
Variables d'environnement
# Répertoire des logs (optionnel, défaut: /var/log/veza)
export LOG_DIR=/var/log/veza
# Niveau de log (optionnel, défaut: INFO)
export LOG_LEVEL=DEBUG
# Pour le frontend (optionnel)
export VITE_API_URL=http://localhost:8080
export VITE_LOG_ENDPOINT=http://localhost:8080/api/v1/logs/frontend
Fallback en développement
En développement, si /var/log/veza n'est pas accessible en écriture, le système utilise automatiquement ./logs (dans le répertoire du projet).
📊 Caractéristiques
Rotation automatique
- Taille max : 100 MB par fichier
- Backups : 10 fichiers maximum
- Rétention : 30 jours
- Compression : Activée (gzip)
Format des logs
- Production/Staging : JSON structuré
- Développement : Console lisible + JSON dans fichiers
Séparation des erreurs
- Fichier principal : Tous les logs (DEBUG, INFO, WARN, ERROR)
- Fichier d'erreurs : Uniquement ERROR (créé automatiquement)
🧪 Vérification
Script de vérification
./verify_logs_setup.sh
Vérification manuelle
# Vérifier que tous les fichiers sont créés
ls -lh /var/log/veza/*.log
# Voir les logs en temps réel
tail -f /var/log/veza/backend-api.log
# Voir uniquement les erreurs
tail -f /var/log/veza/*-error.log
# Parser JSON
cat /var/log/veza/backend-api.log | jq 'select(.L == "ERROR")'
✅ Checklist Finale
- Backend API :
backend-api.log/backend-api-error.log - Frontend :
frontend.log/frontend-error.log(via endpoint) - Chat Server :
chat.log/chat-error.log - Stream Server :
stream.log/stream-error.log - Database :
db.log/db-error.log - Redis :
redis.log/redis-error.log - RabbitMQ :
rabbitmq.log/rabbitmq-error.log - Rotation automatique configurée
- Format JSON en production
- Fallback en développement
- Endpoint frontend configuré
- Documentation complète
🎯 Résultat
Tous les modules sont configurés pour enregistrer leurs logs dans /var/log/veza/ avec des fichiers séparés par module et par niveau d'erreur.
Les fichiers sont créés automatiquement au démarrage des services et lors de la première écriture de log.