我创建了一个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的情况下管理/取消这些语句?
答案 0 :(得分:0)
更新:当没有处理程序时,调用记录器应该没有问题。该库只是打印出一个声明确认缺少处理程序的语句。我的错误是由于尝试添加未定义的处理程序引起的,这很容易通过以下语句纠正:
if (info_handler):
self.logger.addHandler(info_handler)
if (debug_handler):
self.logger.addHandler(debug_handler)
我将保留此问题以显示日志记录库的基本语法。