6.8 KiB
6.8 KiB
✅ 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.logdb.log/db-error.logredis.log/redis-error.lograbbitmq.log/rabbitmq-error.logfrontend.log/frontend-error.log(via endpoint)
Configuration :
- ✅
internal/logging/logger.go- FonctionNewLoggerWithFileRotation() - ✅
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 :
// 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 avecLOG_DIRet fichiers séparés
Code de référence :
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 avecLOG_DIRet fichiers séparés
Code de référence :
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 :
// 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
# 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
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
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
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
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
# 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
# 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
- 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 (100MB, 10 backups, 30 jours)
- Format JSON en production
- Fallback vers
./logsen développement si/var/log/vezainaccessible
🐛 Dépannage
Problème : "failed to create log directory"
Solution :
# 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 :
- Vérifier les permissions :
ls -la /var/log/veza/ - Vérifier les logs de démarrage :
grep "log_dir" /var/log/veza/backend-api.log - Vérifier la variable d'environnement :
echo $LOG_DIR
Problème : Frontend logs non reçus
Vérifications :
- Vérifier que l'endpoint est accessible :
curl http://localhost:8080/api/v1/logs/frontend - Vérifier
VITE_API_URLdans le frontend - Vérifier les logs du backend pour les erreurs
📊 Commandes Utiles
# 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")'