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

189 lines
6.1 KiB
Markdown

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