"""
Point d'entrée de l'application LogBuster !
"""
from cli.afficheur_cli import AfficheurCLI
from cli.parseur_arguments_cli import ParseurArgumentsCLI, ArgumentCLIException
from parse.parseur_log_apache import ParseurLogApache, ParsageLogApacheException
from analyse.filtre_log_apache import FiltreLogApache
from analyse.analyseur_log_apache import AnalyseurLogApache
from export.exporteur import Exporteur, ExportationException
[docs]
def main() -> None:
"""
Point d'entrée de l'application.
Returns:
None
"""
afficheur_cli = AfficheurCLI()
afficheur_cli.affiche_message("Who ya gonna call? LogBuster!")
try:
# Récupération des arguments
parseur_cli = ParseurArgumentsCLI()
arguments_cli = parseur_cli.parse_args()
# Lance l'animation de chargement
afficheur_cli.lance_animation_chargement()
# Analyse syntaxique du fichier log
parseur_log = ParseurLogApache(arguments_cli.chemin_log)
fichier_log = parseur_log.parse_fichier()
# Filtre à appliquer lors de l'analyse
filtre_log = FiltreLogApache(arguments_cli.ip, arguments_cli.code_statut_http)
# Analyse statistique du fichier log
analyseur_log = AnalyseurLogApache(fichier_log, filtre_log)
analyse = analyseur_log.get_analyse_complete()
# Exportation JSON
exporteur = Exporteur(arguments_cli.sortie)
exporteur.export_vers_json(analyse, "analyse-log-apache.json")
# Exportation Camembert
if arguments_cli.camembert:
exporteur.export_vers_html_camembert(
analyseur_log.get_total_par_code_statut_http_camembert(),
"camembert-code_statut_http.html"
)
# Termine l'animation de chargement
afficheur_cli.stop_animation_chargement()
except ArgumentCLIException as ex:
gestion_exception(afficheur_cli, "Erreur dans les arguments fournis !", ex)
except ParsageLogApacheException as ex:
gestion_exception(afficheur_cli, "Erreur dans l'analyse du log Apache !", ex)
except ExportationException as ex:
gestion_exception(afficheur_cli, "Erreur dans l'exportation de l'analyse !", ex)
except (ValueError, TypeError) as ex:
gestion_exception(afficheur_cli, "Erreur interne !", ex)
[docs]
def gestion_exception(afficheur_cli: AfficheurCLI, message: str, exception: Exception) -> None:
"""
Gère les erreurs qui demandent une fin du programme.
Affiche un message d'erreur personnalisé ainsi que les détails de l'exception.
Args:
afficheur_cli (AfficheurCLI): L'objet permettant d'intéragir avec la ligne
de commande.
message (str): Message principal à afficher.
exception (Exception): L'exception qui s'est produite.
Returns:
None
"""
afficheur_cli.stop_animation_chargement(True)
afficheur_cli.affiche_erreur(message, exception)
if __name__ == "__main__":
main()