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

