J'écris un code qui utilise le système python logging
name__. L'idée est que, si LOG
n'existe pas déjà, créez le journal, mais si c'est le cas, récupérez-le et reprenez la journalisation dans ce fichier. Voici mon code:
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 vient de mon bloc else
mais je ne sais pas comment le réparer. Quelqu'un pourrait-il nous éclairer sur cette situation?.
La variable FileHandler
du module de journalisation s'en charge pour vous. Pas besoin de complexité.
Le gestionnaire utilise un paramètre mode
facultatif pour spécifier s'il commence à écrire ou à y ajouter des données.
De les docs :
class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
Le fichier spécifié est ouvert et utilisé comme flux pour la journalisation. Si
mode
n'est pas spécifié,'a'
est utilisé.
Quand tu cours
LOG = logging.getLogger('log_filename')
pour la première fois, une variable globale est créée. Vous pouvez donc également ajouter le code suivant au script ci-dessus:
global LOG
if LOG is not None:
print("found logger !")
else:
("no global variable logger found")