IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

module logging en python: gérer 2 loggers différents


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Consultant E-Learning
    Inscrit en
    Mars 2025
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Mars 2025
    Messages : 1
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 037
    Par défaut
    Hello,

    Quand je lance le code, j'ai les logs du main mais pas du helpers
    Qu'est-ce qui te fait croire dans le code helpers.py que tu écris du log ?

    je sais, j'ia du code redondant, mais c'est pour comprendre, je verrai ca apres
    Non faut le retirer !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 291
    Par défaut
    bonjour

    C'est parce que y a la suppression du dossier log par le main.
    Si je suprrime pas le dossier tout est OK
    Si c'est exact.

    ton code dans main est exécuté après le chargement de tes helpeurs...
    une solution mettre le reset des logs dans utils.__init__.py ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if 'temp' in os.listdir("app"):
        shutil.rmtree("app/temp")
        os.mkdir("app/temp")
    else:
        os.mkdir("app/temp")
    pourquoi répéter 2 fois os.mkdir("app/temp")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if directory exists:
       rm
    create directory

    -----------------


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    log_folder_path = f"app/log"
    ...
    shutil.rmtree("app/temp")
    Que c'est moche d'utiliser un chemin relatif (a la ligne de commande)
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Salut,

    Citation Envoyé par luclon Voir le message
    comment faire?
    La réponse logique sera de nettoyer les répertoires avant de lancer les loggers ou (plus compliqué) arrêter les "loggers", nettoyer, redémarrer les loggers.

    De toutes façons le plus gros soucis est d'avoir répertoires et fichiers relatifs au répertoire de lancement du script.
    Pour ce qui est des "logs", les renommer ou faire des append aux fichiers existants est une pratique plus raisonnable/courante.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 804
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par luclon Voir le message
    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)

    Quand je lance le code, j'ai les logs du main mais pas du helpers
    Parce que le helper écrit les logs PUIS le main les supprime ensuite.

    Citation Envoyé par luclon Voir le message
    C'est parce que y a la suppression du dossier log par le main.
    Exactement. C'est lors de la création du handler que tout est mis en marche. Mais si le dossier log est nettoyé après la création du handler qui l'utilise...

    Citation Envoyé par luclon Voir le message
    Mais je veux supprimer, pour nettuter mon dossier avant demarrage des taches
    comment faire?
    Le principe de base d'un log est de créer "UN" logger puis de lui rajouter divers handlers. Ainsi tu peux nettoyer ton dossier log avant la création des handlers et lors du rajout des handlers tu n'auras plus de souci. Et chaque handler aura le nom que tu veux.
    Je sens que tu as tenté de créer ton logger dans le module pour éviter d'avoir à lui passer l'info "le logger est truc". Malheureusement tu devras trouver un moyen pour cela (par exemple un objet "configuration" qui contient la configuration de ton appli et que tu passeras à tous tes outils). Créer un projet ça se construit sur des fondations solides, ça ne se monte pas de bric et de broc.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. module logging: personaliser le logger d'un module externe
    Par .:Spip:. dans le forum Général Python
    Réponses: 2
    Dernier message: 25/11/2012, 10h57
  2. Rediriger les erreurs en utilisant le module logging
    Par kazh75 dans le forum Général Python
    Réponses: 5
    Dernier message: 12/02/2009, 09h59
  3. module tarfile avec python 2.2
    Par jhonnyBravo dans le forum Général Python
    Réponses: 4
    Dernier message: 14/05/2007, 13h01
  4. Module logging, classe SMTPHandler
    Par kazh75 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 07/04/2007, 20h47
  5. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo