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 :

logging dans un fichier


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut logging dans un fichier
    Bonjour,

    J'essaie d'implémenter un système de logging dans mon script, je veux écrire dans un fichier log.
    Quand j'exécute le script, je n'ai pas d'erreur, mais le fichier log n'est pas crée.

    Le 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
    import logging
     
    ........
     
    def main():
     
        logger = logging.getLogger()
        fhandler = logging.FileHandler(filename='mylog.log')
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        fhandler.setFormatter(formatter)
        logger.addHandler(fhandler)
        logger.setLevel(logging.DEBUG)
     
        logger.info('Started')
     
    ............
     
    if __name__ == "__main__":
        # execute only if run as a script
        main()
    Qu'est ce qui cloche ?

    Merci,
    Nico

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

    Citation Envoyé par DiverSIG Voir le message
    Qu'est ce qui cloche ?
    Le module logging, c'est compliqué. C'est la raison pour laquelle il y a la fonction logging.basicConfig à laquelle on peut passer nom du fichier, formattage,.... sans se prendre le chou à essayer de comprendre et un tutoriel sur la journalisation pour apprendre à l'utiliser.

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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    Si je remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def main():
     
        logging.basicConfig(filename="mylog.log", level=logging.INFO, format="%(asctime)s -- %(name)s -- %(levelname)s -- %(message)s")
     
        logging.info('Started')
    même résultat : pas d'erreur à l'exécution, mais le fichier n'est pas crée.

    Nico

  4. #4
    Expert confirmé

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

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

    C'est le logger qu'il faut utiliser pour les messages:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import logging
    lgg = logging.getLogger(__name__)
     
    if __name__ == '__main__':
        lvl = logging.DEBUG
        LOG_FORMAT = "%(asctime)-6s %(levelname)s: %(name)s - %(message)s"
        logging.basicConfig(filename="mylog.log", format=LOG_FORMAT, 
                            datefmt='%H:%M:%S', level=lvl)
        lgg.info("Hello world")

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    Salut,
    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
     
     
    import logging
     
    log = logging.getLogger(__name__)
     
    ............
     
    def main():
    .......................
     
     
    if __name__ == '__main__':
        # execute only if run as a script
     
        logging.basicConfig(filename="mylog.log",\
                            format="%(asctime)s -- %(name)s -- %(levelname)s -- %(message)s",\
                            level=logging.DEBUG)
        log.info("Started")
        main()
    Même résultat : pas de fichier crée.
    Je suis sous windows, avec python 3.4

    Nico

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

    Si j'essaie sur mon vieux 3.4:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import logging
    >>> logging.basicConfig(filename="mylog.log")
    >>> log = logging.getLogger('foo')
    >>> log.info('bar')
    >>> open('mylog.log').read()
    'WARNING:foo:bar\n'
    >>>
    çà fonctionne chez moi...

    Ce qui vous fait une belle jambe sauf à vous montrer que lorsqu'on poste du code qui pose problème, on le réduit au minimum qui permet de le reproduire et on vérifie que le problème est toujours présent. L'avantage est qu'on partage la même recette de cuisine qui...
    Si çà fonctionne chez vous, vous saurez déjà que le soucis n'est peut être pas dans les instructions que vous nous montrez mais dans les '....' que vous avez édité.
    Et si çà ne fonctionne pas, il vous faudra attendre que quelqu'un ait reproduit le problème sur son Python.

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

  7. #7
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Et sans filename, les logs apparaissent dans le terminal ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    Si je met ce code dans un fichier .py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import logging
    logging.basicConfig(filename="mylog.log")
    log = logging.getLogger('foo')
    log.info('bar')
    Je n'ai aucun fichier crée.
    Si je supprime le paramètre filename, je n'ai rien dans la console.


    Correction :
    En fait le fichier est bien crée, mais il est dans C:\Users\Nicolas.
    Il me semblait qu'il devait être crée dans le répertoire de lancement du script .py, non ?

    Nico

Discussions similaires

  1. log dans différents fichiers suivant même EVENT
    Par colombero dans le forum Logging
    Réponses: 2
    Dernier message: 12/03/2010, 13h54
  2. Réponses: 1
    Dernier message: 08/01/2010, 10h55
  3. Renvoi des logs dans un fichier
    Par Trebor dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/09/2009, 19h39
  4. Log dans un fichier
    Par gifffftane dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 07/04/2008, 21h29
  5. Sortie du log dans un fichier
    Par F2S dans le forum Logging
    Réponses: 2
    Dernier message: 24/11/2007, 11h26

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