veza/docs/archive/root-md/FINAL_LOGGING_SUMMARY.md
senke 43af35fd93 chore(audit 2.2, 2.3): nettoyer .md et .json à la racine
- 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
2026-02-15 14:35:08 +01:00

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

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

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 :

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

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