veza/LOGGING_FILES_VERIFICATION.md

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.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 :

// 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 :

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 :

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 ./logs en développement si /var/log/veza inaccessible

🐛 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 :

  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

# 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")'