🔍 LogAnalyzer est un outil en ligne de commande (CLI) développé en Go pour analyser des fichiers de logs provenant de diverses sources (serveurs, applications). Il permet de centraliser l'analyse de multiples logs en parallèle et d'en extraire des informations clés, tout en gérant les erreurs potentielles de manière robuste.
- ✅ Analyse parallèle : Traitement concurrent de multiples fichiers de logs via des goroutines
- ✅ Gestion d'erreurs robuste : Erreurs personnalisées avec
errors.Iseterrors.As - ✅ Interface CLI intuitive : Commandes et drapeaux avec Cobra
- ✅ Export JSON : Génération de rapports au format JSON
- ✅ Filtrage des résultats : Filtrage par statut (OK/FAILED)
- ✅ Horodatage automatique : Ajout automatique de la date aux fichiers de sortie
- ✅ Création automatique de répertoires : Création des dossiers de sortie si nécessaires
- ✅ Gestion des configurations : Ajout manuel de nouvelles configurations
Le projet suit une architecture modulaire organisée en packages logiques :
loganalyzer/
├── cmd/ # Commandes CLI
│ ├── root.go # Commande racine
│ ├── analyze.go # Commande d'analyse
│ └── add-log.go # Commande d'ajout de log
├── internal/ # Packages internes
│ ├── config/ # Gestion des configurations JSON
│ ├── analyzer/ # Logique d'analyse et erreurs personnalisées
│ └── reporter/ # Export des rapports JSON
└── main.go # Point d'entrée
git clone <votre-repo>
cd loganalyzer
go build -o loganalyzer .Analyse les fichiers de logs spécifiés dans un fichier de configuration JSON.
# Analyse basique
./loganalyzer analyze -c config.json
# Analyse avec export JSON
./loganalyzer analyze -c config.json -o report.json
# Analyse avec filtrage par statut
./loganalyzer analyze -c config.json --status FAILED-c, --config: Chemin vers le fichier de configuration JSON (requis)-o, --output: Chemin vers le fichier de sortie JSON (optionnel)--status: Filtrer par statut (OKouFAILED)
Ajoute une nouvelle configuration de log au fichier de configuration existant.
./loganalyzer add-log --id web-server-3 --path /var/log/nginx/error.log --type nginx-error --file config.json--id: Identifiant unique pour le log (requis)--path: Chemin vers le fichier de log (requis)--type: Type de log (requis)--file: Chemin vers le fichier config.json (requis)
[
{
"id": "web-server-1",
"path": "/var/log/nginx/access.log",
"type": "nginx-access"
},
{
"id": "app-backend-2",
"path": "/var/log/my_app/errors.log",
"type": "custom-app"
}
][
{
"log_id": "web-server-1",
"file_path": "/var/log/nginx/access.log",
"status": "OK",
"message": "Analyse terminée avec succès.",
"error_details": ""
},
{
"log_id": "invalid-path",
"file_path": "/non/existent/log.log",
"status": "FAILED",
"message": "Fichier introuvable.",
"error_details": "file not found or inaccessible: /non/existent/log.log"
}
]Les fichiers de sortie JSON sont automatiquement nommés avec la date du jour au format AAMMJJ_filename.json :
report.jsondevient250527_report.json(pour le 27 mai 2025)
Si le chemin de sortie inclut des répertoires qui n'existent pas, ils sont créés automatiquement :
./loganalyzer analyze -c config.json -o rapports/2025/analyse.json
# Crée automatiquement les dossiers rapports/2025/L'application utilise deux types d'erreurs personnalisées :
- FileNotFoundError : Fichier introuvable ou inaccessible
- ParsingError : Erreur lors de l'analyse du log (disponible pour gestion d'erreurs réelles)
# Utiliser la configuration de test incluse
./loganalyzer analyze -c config.json
# Tester avec export
./loganalyzer analyze -c config.json -o test-report.json
# Tester le filtrage
./loganalyzer analyze -c config.json --status FAILED# Ajouter une nouvelle configuration
./loganalyzer add-log --id test-log --path test-logs/new.log --type test --file config.jsonL'analyseur simule un traitement réaliste :
- Temps d'analyse aléatoire : 50-200ms par fichier
- Traitement parallèle : Une goroutine par fichier de log
- Synchronisation : Utilisation de
sync.WaitGroupet channels
- ✅ Gestion des dossiers d'exportation : Création automatique des répertoires
- ✅ Horodatage des exports JSON : Nommage automatique avec date
- ✅ Commande add-log : Ajout manuel de configurations
- ✅ Filtrage des résultats : Filtrage par statut
# Aide générale
./loganalyzer --help
# Aide pour une commande spécifique
./loganalyzer analyze --help
./loganalyzer add-log --helpL'application gère les erreurs suivantes :
- Fichiers de configuration introuvables ou malformés
- Fichiers de logs inaccessibles
- Erreurs d'écriture de rapports
- Conflits d'identifiants lors de l'ajout de configurations
Analyse de 3 fichier(s) de log...
=== RÉSULTATS D'ANALYSE ===
ID: nginx-access
Chemin: test-logs/access.log
Statut: OK
Message: Analyse terminée avec succès.
---
ID: app-errors
Chemin: test-logs/app.log
Statut: OK
Message: Analyse terminée avec succès.
---
ID: invalid-file
Chemin: test-logs/nonexistent.log
Statut: FAILED
Message: Fichier introuvable.
Détails d'erreur: file not found or inaccessible: test-logs/nonexistent.log
---
=== RÉSUMÉ ===
Total: 3
Succès: 2
Échecs: 1
Rapport exporté vers: 250527_report.json