veza/LOGGING_FILES_VERIFICATION.md

254 lines
6.8 KiB
Markdown
Raw Normal View History

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