Python 如何删除日志筛选器/格式化程序

Python 如何删除日志筛选器/格式化程序,python,python-3.x,logging,Python,Python 3.x,Logging,我有以下日志过滤器: class LogFilter: """ Print all messages that do not equal hello.""" def filter(self, record): print ('@@@@@@@ Filter', record) if getattr(record, 'msg') == 'Hello': return False return True

我有以下日志过滤器:

class LogFilter:
    """
    Print all messages that do not equal hello."""
    def filter(self, record):
        print ('@@@@@@@ Filter', record)
        if getattr(record, 'msg') == 'Hello':
            return False
        return True
    def __repr__(self):
        return 'LogFilter'
然后:

import logging
handler = logging.StreamHandler()
handler.addFilter(LogFilter())
logger = logging.getLogger(__name__)
logger.addHandler(handler)
如何卸下此过滤器?例如,当我尝试:

>>> handler.removeFilter(LogFilter())
>>> handler.removeFilter(LogFilter)
>>> handler.removeFilter('LogFilter') # ????
>>> handler.filters
[LogFilter] # filter is still there.

我还有过滤器。删除筛选器(或格式化程序)的正确方法是什么?如果查看
removeFilter

def removeFilter(self, filter):
    """
    Remove the specified filter from this handler.
    """
    if filter in self.filters:
        self.filters.remove(filter)
您会发现需要实际的
过滤器
对象才能将其删除。一个快速的解决方法就是这样做

import logging
handler = logging.StreamHandler()
LF = LogFilter()
handler.addFilter(LF)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
然后,当您要移除过滤器时

>>> handler.removeFilter(LF)
>>> handler.filters
[]