module logging en python: gérer 2 loggers différents
bonjour
j'ai un fichier main.py et un fichier helpers.py avec des fonctions
je veux deux loggers pour chacun des fichiers
j'ai un dossier log dans lequel je store les logs.
le logger de main ecrit dans le fichier __main__.log
le logger de helpers ecrit dans __utils.helpers__.log (la cible c'est que le logger puisse ecrire dans __main__.log et __utils.helpers__.log selon divers conditions mais on verra ca plus tard)
le début du script main vient nettoyer mes dossier et créer des dossiers vide (genre les dossier temp, resultat, mais aussi le dossier log)
et c'est là qu'est mon probleme car ca perturbe le logger dans helpers.
j'epxlique:
j'ai le main avec ce code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import logging
import shutil
import os
from utils.helpers import affiche
# configure mon dossier
if 'temp' in os.listdir("app"):
shutil.rmtree("app/temp")
os.mkdir("app/temp")
else:
os.mkdir("app/temp")
if "log" in os.listdir("app"):
shutil.rmtree("app/log")
os.mkdir("app/log")
else:
os.mkdir("app/log")
# creation du logger dans le main
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s--%(name)s--%(levelname)s--%(message)s")
file_handler = logging.FileHandler(f"app/log/{logger.name}.log", mode="w")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# démarrage
logger.info("début")
affiche()
logger.info("fin") |
j'ai le helpers ave ce code:
je sais, j'ia du code redondant, mais c'est pour comprendre, je verrai ca apres
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import logging
print("import module")
log_folder_path = f"app/log"
# creation du logger dans le module perso
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s--%(name)s--%(levelname)s--%(message)s")
file_handler = logging.FileHandler(f"{log_folder_path}/{logger.name}.log", mode="w")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
def affiche() -> None:
print("affiche")
logger.info("ca fonctionne") |
Quand je lance le code, j'ai les logs du main mais pas du helpers
C'est parce que y a la suppression du dossier log par le main.
Si je suprrime pas le dossier tout est OK
Mais je veux supprimer, pour nettuter mon dossier avant demarrage des taches
comment faire?