253 lines
6.8 KiB
Markdown
253 lines
6.8 KiB
Markdown
# ✅ 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")'
|
|
```
|
|
|