Last active 1734009670

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

Revision 41baa033cd75cd0700066ce5e6af444b5a6a8616

template_base.py Raw
1#!/usr/bin/python3
2# -*- coding: utf-8 -*-
3
4import logging
5from logging.handlers import RotatingFileHandler
6import argparse
7
8# construction du logger
9LOGGER = logging.getLogger()
10LOGGER.setLevel(logging.WARNING)
11#LOGGER.setLevel(logging.DEBUG)
12formatter = logging.Formatter('%(asctime)s :: %(module)s :: %(levelname)s :: %(message)s')
13
14# écriture d'un fichier de log
15file_handler = RotatingFileHandler('activity.log', 'a', 1000000, 1)
16file_handler.setFormatter(formatter)
17LOGGER.addHandler(file_handler)
18
19# écriture de log sur la sortie standard
20stream_handler = logging.StreamHandler()
21stream_handler.setFormatter(formatter)
22LOGGER.addHandler(stream_handler)
23
24# gestion des arguments avec argparse, ici on reprend un version modifié mise en place pour agent_dpluzz
25# https://docs.python.org/fr/3.6/howto/argparse.html
26
27PARSER = argparse.ArgumentParser(
28 description="présentation générale \
29de l'outil.")
30
31# FLAG
32PARSER.add_argument("-d",
33 "--download",
34 action="store_true",
35 help="description de la fonction.")
36
37# Passage de parametre
38PARSER.add_argument("-lpf",
39 "--pattern_load",
40 type=str,
41 metavar=('FICHIER'),
42 help="Charge un fichier de motif (les lignes vide et commençant pas un # sont filtré).")
43
44# Compteur
45PARSER.add_argument("-v",
46 "--verbosity",
47 action='count',
48 help="défini le niveau de verbosité à afficher.")
49
50# Parsing des arguments
51ARGS = PARSER.parse_args()
52
53# controle du compteur
54if ARGS.verbosity == 5:
55 LOGGER.setLevel(logging.DEBUG)
56if ARGS.verbosity == 4:
57 LOGGER.setLevel(logging.INFO)
58if ARGS.verbosity == 3:
59 LOGGER.setLevel(logging.WARNING)
60if ARGS.verbosity == 2:
61 LOGGER.setLevel(logging.ERROR)
62if ARGS.verbosity == 1:
63 LOGGER.setLevel(logging.CRITICAL)
64
65# controle du FLAG
66if ARGS.download:
67 pritnt("fonction download activé")
68 exit(0)
69
70# controle du passage de parametre
71if ARGS.pattern_load:
72 print("motif : %s"%ARGS.pattern_load)
73 exit(0)
74