# ✅ 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` - Fonction `NewLoggerWithFileRotation()` - `internal/config/config.go` - Configuration des loggers par module - `internal/handlers/frontend_log_handler.go` - Endpoint pour logs frontend - `internal/api/router.go` - Route `/api/v1/logs/frontend` **Loggers configurés :** ```go // 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 avec `LOG_DIR` **Configuration :** ```rust 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 avec `LOG_DIR` **Configuration :** ```rust 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 :** ```typescript // 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 avec `LevelFilter::ERROR` - `Cargo.toml` - Dépendances mises à jour **Fonctionnalité :** - Crée automatiquement `module.log` et `module-error.log` - Filtre les erreurs avec `LevelFilter::ERROR` ## ⚙️ Configuration ### Variables d'environnement ```bash # 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 ```bash ./verify_logs_setup.sh ``` ### Vérification manuelle ```bash # 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 - [x] Backend API : `backend-api.log` / `backend-api-error.log` - [x] Frontend : `frontend.log` / `frontend-error.log` (via endpoint) - [x] Chat Server : `chat.log` / `chat-error.log` - [x] Stream Server : `stream.log` / `stream-error.log` - [x] Database : `db.log` / `db-error.log` - [x] Redis : `redis.log` / `redis-error.log` - [x] RabbitMQ : `rabbitmq.log` / `rabbitmq-error.log` - [x] Rotation automatique configurée - [x] Format JSON en production - [x] Fallback en développement - [x] Endpoint frontend configuré - [x] 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.