如果没有处理程序,则禁用记录器

时间:2016-03-29 17:51:33

标签: python-2.7 object logging

我创建了一个python脚本和类对象,它将日志处理程序传递给后者。处理程序是使用 logging 类创建的,如下所示:

#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的情况下管理/取消这些语句?

1 个答案:

答案 0 :(得分:0)

更新:当没有处理程序时,调用记录器应该没有问题。该库只是打印出一个声明确认缺少处理程序的语句。我的错误是由于尝试添加未定义的处理程序引起的,这很容易通过以下语句纠正:

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

我将保留此问题以显示日志记录库的基本语法。