2017-01-20 3 views
3

Я пишу код, который использует систему python logging. Идея состоит в том, что если LOG еще не существует, создайте журнал, но если это произойдет, то получите журнал и возобновите ведение журнала в этом файле. Вот мой код:Запись в Python: создать журнал, если он не существует или открыть и продолжить ведение журнала, если он

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() 

Я подозреваю, что проблема с моим else блоком, но я не знаю, как исправить. Может ли кто-нибудь пролить свет на эту ситуацию.

+0

настроить регистратор один раз, а затем импортировать 'LOG' из любого места, которое вы хотите, нет необходимости проверять наличие файла журнала – mic4ael

ответ

3

Модуль регистрации данных FileHandler позаботится об этом для вас. Нет необходимости в сложности.

Обработчик принимает необязательный параметр mode, чтобы указать, начинает ли он записывать или добавлять к нему данные.

От the docs:

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

Указанный файл открыт и используется в качестве потока для регистрации. Если mode не указан, используется 'a'.