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 :

Comment fermer un log file


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Par défaut Comment fermer un log file
    bonjour,

    Je cherche à ouvrir (et écrire dans un log file à chaque clique sur un bouton), le soucis c'est que avec mon code actuel j'écris dans le log file précédent, en appuyant sur le bouton, j'appel l'objet donc la partie en question est :

    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
    class nmeaManager(object) :
     
        def __init__(self,source_file,gps_solution,log_file,update_rate):
     
     
            ### Get the Source File 
            ############################################## 
            self.source = source_file
     
            ### Get the Gps solution depending on the name of the file
            ##############################################
            self.gps_solution = gps_solution
     
            ### Get the Destination File
            ##############################################
            self.destination = log_file
     
            ###Set the Destination file
            ##############################################
            logging.basicConfig(filename=self.destination,filemode='w',format= "[%(asctime)s]%(message)s",level=logging.DEBUG)
     
     
            #Get update_rate
            self.update_rate = update_rate
     
            ###Start the ckecking cycle
            ##############################################
            self.start(self.gps_solution,self.update_rate,self.source)
            self.stop(self.destination)
    Donc la création du fichier se fait avec logging.basicConfig() mais quand je rappel cette fonction (avec les variables d'arguments qui ont changé, j'ai vérifié avec le debugger) j'écrie encore dans le même fichier. Existe-t-il donc quelque chose du genre de logging.close() pour pouvoir créer un nouveau fichier ?


    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Le module logging est une sorte de "singleton": les appels successifs a .basicConfig sont a priori ignores.
    Si vous voulez fermer le FileHandler associe et en ouvrir un autre, il faut récupérer le FileHandler "courant": lire les sources du module pour voir comment faire.

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

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Essayes quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import logging, logging.handlers
    logger = logging.getLogger(__name__)
    form = "[%(asctime)s]%(message)s"
    lvl = logging.DEBUG
    logfile = "mylog.log"
    logging.basicConfig(filename=logfile, filemode='a', format=form ,level=lvl)
    file_handler = logging.handlers.RotatingFileHandler(logfile, backupCount=7, 
                                                        encoding='utf-8')
    file_handler.setFormatter(logging.Formatter(form))
    logger.addHandler(file_handler)
    et dans ta classe, tu remplaces cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            logging.basicConfig(filename=self.destination,filemode='w',format= "[%(asctime)s]%(message)s",level=logging.DEBUG)
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            file_handler.doRollover()
    Pas testé.

    voir: http://docs.python.org/2/library/log...gging.handlers

Discussions similaires

  1. comment créer un log file pour chaque objet
    Par inès83 dans le forum Programmation par agent
    Réponses: 4
    Dernier message: 05/07/2008, 21h16
  2. Réponses: 11
    Dernier message: 20/09/2007, 14h51
  3. comment ecrire dans le log file?
    Par moradbe dans le forum Logging
    Réponses: 3
    Dernier message: 14/02/2007, 01h32
  4. Comment fermer l'application en même temps que Windows ?
    Par semaj_james dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2004, 22h17
  5. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42

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