使用python的logging
模块,如果记录了错误或严重性,我想返回非零;如果没有记录错误或严重性,我想返回非零。我是否必须添加一个图层来捕获它,或者这是本机功能?
import logging
def CheckMaxErr():
pass
logging.debug("Cat")
CheckMaxErr() #should return logging.DEBUG
logging.error("Dog")
CheckMaxErr() #should return logging.ERROR
答案 0 :(得分:1)
您可以实现日志记录处理程序的子类,并在实例上设置flag属性(如果曾经被调用过)。您可以将处理程序的级别设置为logging.ERROR
级别,以使其在这些消息上触发。
import logging
class MyHandler(logging.Handler):
def __init__(self):
super().__init__()
self.flag = False
def emit(self, record):
self.flag = True
logger = logging.getLogger(__name__)
handle = MyHandler()
handle.setLevel(logging.ERROR)
logger.addHandler(handle)
logger.debug("debug message")
print(handle.flag) # False
logger.error("ERROR")
print(handle.flag) # True
在此示例中,处理程序实际上不对消息执行任何操作,仅在触发消息时设置标志。您可以添加另一个处理程序以登录到所需的任何位置(控制台,文件等)