2017-01-20 5 views
3

J'écris du code qui utilise le système python logging. L'idée est que si le LOG n'existe pas déjà, créez le journal, mais si c'est le cas, récupérez le journal et reprenez la journalisation dans ce fichier. Voici mon code:Journalisation Python: créer un journal s'il n'existe pas ou ouvrir et continuer la journalisation si c'est le cas

import logging 
import os 

log_filename='Transactions.log') 
if os.path.isfile(log_filename)!=True: 
    LOG = logging.getLogger('log_filename') 
    LOG.setLevel(logging.DEBUG) 
    # create file handler which logs even debug messages 
    fh = logging.FileHandler('log_filename') 
    fh.setLevel(logging.DEBUG) 
    # create console handler with a higher log level 
    ch = logging.StreamHandler() 
    ch.setLevel(logging.DEBUG) 
    # create formatter and add it to the handlers 
    formatter = logging.Formatter('-->%(asctime)s - %(name)s:%(levelname)s - %(message)s') 
    fh.setFormatter(formatter) 
    ch.setFormatter(formatter) 
    # add the handlers to the logger 
    LOG.addHandler(fh) 
    LOG.addHandler(ch) 
else: 
    LOG=logging.getLogger() 

Je soupçonne que le problème est avec mon bloc else mais je ne sais pas comment résoudre. Quelqu'un pourrait-il nous éclairer sur cette situation?

+0

configurer votre enregistreur une seule fois, puis importer 'LOG' de n'importe quel endroit que vous voulez, pas besoin de vérifier si le fichier journal existe – mic4ael

Répondre

3

Le module de consignation FileHandler prend soin de cela pour vous. Pas besoin de complexité.

Le gestionnaire prend un paramètre facultatif mode pour indiquer s'il commence à écrire ou à ajouter des données.

De the docs:

class logging.FileHandler(filename, mode='a', encoding=None, delay=False)

Le fichier spécifié est ouvert et utilisé comme courant pour l'enregistrement. Si mode n'est pas spécifié, 'a' est utilisé.