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 utiliser correctement l'api python logging ?


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Comment utiliser correctement l'api python logging ?
    Bonjour,

    J'ai un code qui semble fonctionner correctement à ceci sauf le logging qui génère une exception.

    Voici un extrait de mon 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    /usr/bin/env python
    # -*- coding: latin-1 -*-
    '''
     
    # ce code pourrait faire partie d'un logiciel libre payant open source GPL chaque personne pourrait ou non ce faire pyer pour le travail sur son code.
    # Ce code serait distribuer en open source dans l'espoir qu'il serait am�lior� et maintenu par une communaut� motiv�e et afin que le programme
    # qui en r�sulte ne meure si possible jamais.
     
     
     
    Created on 11 févr. 2015
     
    @author: Battant
    '''
     
     
    import logging, logging.handlers
     
     
     
    import sys
     
    '''
    Cette classe va démarrer le programme de facturation  billmanagee
    '''
    class Starter :
     
     
     
        verbose = False
     
     
        def __init__(self) :
     
            self.prepareLogFile()
            logging.debug ('session principale')
            if '-v' in sys.argv :
                Starter.verbose = True
            if Starter.verbose :
                logging.debug ('session principale')
     
     
            sys.exit(Starter.app.exec_())
     
    #La méthode prepareLogFile fait le nécessaire pour préparer le journal de débugage et d'erreur
        def prepareLogFile (self) :
            filename='billManagerOutput.log'
            logging.vl = logging.DEBUG
            # code extract from python doc
            FORMAT = '%(asctime)-15s %(clientip)s %(message)s'
            logging.basicConfig (filename=filename, filemode='a', format=FORMAT,level=logging.DEBUG)
            logging.handlers.RotatingFileHandler(filename=filename,encoding='ISO-8859-1')
         #   file_handler.setFormatter(logging.Formatter(form))
          #  logger.addHandler(file_handler)
     
     
     
     
     
     
     
     
     
    if __name__=='__main__':
     
            Starter.app = QApplication(sys.argv)
            Starter()
    J'ai un problème avec la ligne ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            logging.debug ('session principale')
    Message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Traceback (most recent call last):
      File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 859, in emit
        msg = self.format(record)
      File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 732, in format
        return fmt.format(record)
      File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 474, in format
        s = self._fmt % record.__dict__
    KeyError: 'clientip'
    Logged from file Starter.py, line 36
    Savez-vous quelle est la cause de ce problème et comment le résoudre ?

    Merci pour votre réponse.

    Salutations
    Battant

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Lorsque vous définissez le format des messages comme '%(asctime)-15s %(clientip)s %(message)s' vous demandez au logger de n'afficher que les "champs" correspondants du logrecord qui est un dict dont les clés sont documentées ici.
    Il n'y a pas de clé "clientip" et le message d'erreur est cohérent.

    Savez-vous quelle est la cause de ce problème et comment le résoudre ?
    Le module logging n'est pas pour les débutants.
    Savoir lire la documentation et essayer de la comprendre est un pré-requis.


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

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Pour info, la ligne posant problème est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            FORMAT = '%(asctime)-15s %(clientip)s %(message)s'
    Nouvelle ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            FORMAT = '%(asctime)-15s %(message)s'
    Battant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/08/2007, 11h40
  2. comment utiliser correctement les sessions?
    Par cladsam dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2006, 11h56
  3. [BOOST]Comment utiliser la lib boost.python
    Par Invité dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 30/01/2006, 11h35
  4. [C#] Comment utiliser correctement Stream.Read ?
    Par ArChAnGe76 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/12/2005, 20h48
  5. Comment utiliser correctement le debugger de DevCPP
    Par Le Furet dans le forum Dev-C++
    Réponses: 2
    Dernier message: 29/09/2005, 09h56

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