2016-03-29 2 views
1

Я создаю скрипт python и объект класса, который передает обработчики регистрации в последний. Обработчики создаются с помощью протоколирование класс следующим образом:Отключение регистраторов, если нет обработчиков

#Debug Handler 
debug_handler = logging.FileHandler('Debug.log') 
debug_handler.setLevel(logging.DEBUG) 

#Info Handler 
info_handler = logging.FileHandler('Normal.log') 
info_handler.setLevel(logging.INFO) 

Эти объекты обработчик передаются непосредственно в объект инициализаторе:

def __init__(self, type, path, info_handler = False, debug_handler = False): 

    #Establishes Class Logger 
    self.logger = logging.getLogger('LoggerName') 
    self.logger.setLevel(logging.DEBUG) 
    if (info_handler): 
     self.logger.addHandler(info_handler) 
    if (debug_handler): 
     self.logger.addHandler(debug_handler) 

Моя цель состоит в том, чтобы обработчики полностью опционально для класс объектов, но для их использования я должен разбросать вызовы через код так же часто, как заявления печати. Пример:

self.logger.info('INITIALIZING RESULTS OBJECT') 

Это означает, что это ошибка, если обработчики не пройдут. Как я могу управлять/аннулировать эти инструкции, не помещая try/catch на каждый звонок в коде?

ответ

0

Обновление: не должно быть проблем с вызовом регистратора при отсутствии обработчиков. Библиотека просто распечатывает заявление, подтверждающее отсутствие обработчика. Моя ошибка была вызвана попытка добавить обработчик, который не был определен, и это легко исправить, используя высказыванием:

if (info_handler): 
    self.logger.addHandler(info_handler) 
if (debug_handler): 
    self.logger.addHandler(debug_handler) 

Я оставлю этот вопрос, чтобы показать базовый синтаксис для библиотеки протоколирования.

Смежные вопросы