Last active 1734009670

logger, argparse, verbose tous ce qu'il faut pour démarrer un programme concret, modèle, template, base, python

template_base.py Raw
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4def app():
5 import logging
6 from logging.handlers import RotatingFileHandler
7 import argparse
8
9 # construction du logger
10 LOGGER = logging.getLogger()
11 LOGGER.setLevel(logging.ERROR)
12 #LOGGER.setLevel(logging.DEBUG)
13 formatter = logging.Formatter('%(asctime)s :: %(module)s :: %(levelname)s :: %(message)s')
14
15 # écriture d'un fichier de log
16 file_handler = RotatingFileHandler(__file__ + '.log', 'a', 1000000, 1)
17 file_handler.setFormatter(formatter)
18 LOGGER.addHandler(file_handler)
19
20 # écriture de log sur la sortie standard
21 stream_handler = logging.StreamHandler()
22 stream_handler.setFormatter(formatter)
23 LOGGER.addHandler(stream_handler)
24
25 # gestion des arguments avec argparse, ici on reprend un version modifié mise en place pour agent_dpluzz
26 # https://docs.python.org/fr/3.6/howto/argparse.html
27
28 PARSER = argparse.ArgumentParser(
29 description="présentation générale \
30 de l'outil.")
31
32 # FLAG
33 PARSER.add_argument("-d",
34 "--download",
35 action="store_true",
36 help="description de la fonction.")
37
38 # Passage de parametre
39 PARSER.add_argument("-lpf",
40 "--pattern_load",
41 type=str,
42 metavar=('FICHIER'),
43 help="Charge un fichier de motif (les lignes vide et commençant pas un # sont filtré).")
44
45 # Compteur
46 PARSER.add_argument("-v",
47 "--verbosity",
48 action='count',
49 default=2,
50 help="défini le niveau de verbosité à afficher.")
51
52 # Parsing des arguments
53 ARGS = PARSER.parse_args()
54
55 # controle du compteur
56 if ARGS.verbosity >= 5:
57 LOGGER.setLevel(logging.DEBUG)
58 LOGGER.warning("Niveau de la log : DEBUG")
59 if ARGS.verbosity == 4:
60 LOGGER.setLevel(logging.INFO)
61 LOGGER.warning("Niveau de la log : INFO")
62 if ARGS.verbosity == 3:
63 LOGGER.setLevel(logging.WARNING)
64 LOGGER.warning("Niveau de la log : WARNING")
65 if ARGS.verbosity == 2:
66 LOGGER.setLevel(logging.ERROR)
67
68 # controle du FLAG
69 if ARGS.download:
70 LOGGER.info("fonction download activé")
71
72 # controle du passage de parametre
73 if ARGS.pattern_load:
74 LOGGER.info("motif : %s"%ARGS.pattern_load)
75
76
77 #
78 # Debut du programme
79 #
80
81 LOGGER.warning("Début du programme")
82
83 pass
84
85 LOGGER.warning("Fin du programme")
86
87 #
88 # Fin du programme
89 #
90
91 exit(0)
92
93
94
95if __name__ == '__main__':
96
97 try:
98 app()
99 except Exception as error:
100 LOGGER.error(f"Erreur inatendu : {error}")
101 sys.exit(1)
102 finally:
103 pass
104