# ✅ Vérification - Configuration des Fichiers de Logs Veza ## 📋 Liste des Fichiers Requis Tous les logs doivent être enregistrés dans `/var/log/veza/` avec des fichiers séparés par module et par niveau d'erreur. ### Fichiers Attendus ``` /var/log/veza/ ├── backend-api.log ✅ Configuré ├── backend-api-error.log ✅ Configuré ├── frontend.log ✅ Configuré (via endpoint) ├── frontend-error.log ✅ Configuré (via endpoint) ├── chat.log ✅ Configuré ├── chat-error.log ✅ Configuré ├── stream.log ✅ Configuré ├── stream-error.log ✅ Configuré ├── db.log ✅ Configuré ├── db-error.log ✅ Configuré ├── redis.log ✅ Configuré ├── redis-error.log ✅ Configuré ├── rabbitmq.log ✅ Configuré └── rabbitmq-error.log ✅ Configuré ``` ## 🔍 Vérification par Module ### 1. Backend Go (`veza-backend-api`) **Fichiers :** - `backend-api.log` / `backend-api-error.log` - `db.log` / `db-error.log` - `redis.log` / `redis-error.log` - `rabbitmq.log` / `rabbitmq-error.log` - `frontend.log` / `frontend-error.log` (via endpoint) **Configuration :** - ✅ `internal/logging/logger.go` - Fonction `NewLoggerWithFileRotation()` - ✅ `internal/config/config.go` - Loggers séparés pour chaque module - ✅ `internal/handlers/frontend_log_handler.go` - Endpoint `/api/v1/logs/frontend` - ✅ `internal/api/router.go` - Route publique pour logs frontend **Code de référence :** ```go // Backend API logging.NewLoggerWithFileRotation(config.LogDir, "backend-api", env, logLevel) // DB logging.NewLoggerWithFileRotation(config.LogDir, "db", env, logLevel) // Redis logging.NewLoggerWithFileRotation(config.LogDir, "redis", env, logLevel) // RabbitMQ logging.NewLoggerWithFileRotation(config.LogDir, "rabbitmq", env, logLevel) // Frontend (via endpoint) logging.NewLoggerWithFileRotation(logDir, "frontend", cfg.Env, cfg.LogLevel) ``` ### 2. Chat Server (`veza-chat-server`) **Fichiers :** - `chat.log` / `chat-error.log` **Configuration :** - ✅ `src/main.rs` - Configuration avec `LOG_DIR` et fichiers séparés **Code de référence :** ```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); ``` ### 3. Stream Server (`veza-stream-server`) **Fichiers :** - `stream.log` / `stream-error.log` **Configuration :** - ✅ `src/main.rs` - Configuration avec `LOG_DIR` et fichiers séparés **Code de référence :** ```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); ``` ### 4. Frontend (`apps/web`) **Fichiers :** - `frontend.log` / `frontend-error.log` (écrits côté backend) **Configuration :** - ✅ `src/utils/logger.ts` - Envoi automatique vers `/api/v1/logs/frontend` - ✅ Endpoint backend : `POST /api/v1/logs/frontend` **Code de référence :** ```typescript // Envoi automatique vers backend 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); ``` ## 🧪 Tests de Vérification ### Test 1 : Vérifier que les fichiers sont créés ```bash # Créer le répertoire si nécessaire sudo mkdir -p /var/log/veza sudo chown -R $USER:$USER /var/log/veza # Démarrer les services et vérifier ls -lh /var/log/veza/*.log ``` ### Test 2 : Vérifier le backend Go ```bash cd veza-backend-api LOG_LEVEL=DEBUG APP_ENV=development go run cmd/api/main.go # Dans un autre terminal ls -lh /var/log/veza/backend-api*.log ls -lh /var/log/veza/db*.log ls -lh /var/log/veza/redis*.log ls -lh /var/log/veza/rabbitmq*.log ``` ### Test 3 : Vérifier le chat server ```bash cd veza-chat-server LOG_DIR=/var/log/veza cargo run # Dans un autre terminal ls -lh /var/log/veza/chat*.log ``` ### Test 4 : Vérifier le stream server ```bash cd veza-stream-server LOG_DIR=/var/log/veza cargo run # Dans un autre terminal ls -lh /var/log/veza/stream*.log ``` ### Test 5 : Vérifier l'endpoint frontend ```bash curl -X POST http://localhost:8080/api/v1/logs/frontend \ -H "Content-Type: application/json" \ -d '{ "level": "ERROR", "message": "Test log from frontend", "context": {"request_id": "test-123"} }' # Vérifier les fichiers ls -lh /var/log/veza/frontend*.log tail -n 1 /var/log/veza/frontend.log tail -n 1 /var/log/veza/frontend-error.log ``` ## 📝 Configuration Requise ### 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 ``` ### Permissions ```bash # Créer le répertoire avec les bonnes permissions sudo mkdir -p /var/log/veza sudo chown -R $USER:$USER /var/log/veza sudo chmod 755 /var/log/veza ``` ## ✅ Checklist de Vérification - [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 (100MB, 10 backups, 30 jours) - [x] Format JSON en production - [x] Fallback vers `./logs` en développement si `/var/log/veza` inaccessible ## 🐛 Dépannage ### Problème : "failed to create log directory" **Solution :** ```bash # Option 1 : Créer le répertoire manuellement sudo mkdir -p /var/log/veza sudo chown -R $USER:$USER /var/log/veza # Option 2 : Utiliser un répertoire local en développement export LOG_DIR=./logs ``` ### Problème : Fichiers non créés **Vérifications :** 1. Vérifier les permissions : `ls -la /var/log/veza/` 2. Vérifier les logs de démarrage : `grep "log_dir" /var/log/veza/backend-api.log` 3. Vérifier la variable d'environnement : `echo $LOG_DIR` ### Problème : Frontend logs non reçus **Vérifications :** 1. Vérifier que l'endpoint est accessible : `curl http://localhost:8080/api/v1/logs/frontend` 2. Vérifier `VITE_API_URL` dans le frontend 3. Vérifier les logs du backend pour les erreurs ## 📊 Commandes Utiles ```bash # Voir tous les fichiers de logs ls -lh /var/log/veza/*.log # Voir les erreurs de tous les modules tail -f /var/log/veza/*-error.log # Compter les erreurs grep -c "ERROR" /var/log/veza/*-error.log # Taille des fichiers du -h /var/log/veza/ # Parser JSON cat /var/log/veza/backend-api.log | jq 'select(.L == "ERROR")' ```