import logging class LogRecordTypeFilter(logging.Filter): def __init__(self, cls): self.cls = cls def filter(self, record): t = type(record) if t is not self.cls: raise TypeError('Unexpected LogRecord type %s, expected %s' % (t, self.cls)) return True class MyLogRecord(logging.LogRecord): pass manager = logging.Manager(None) manager.setLogRecordFactory(MyLogRecord) logger = manager.getLogger('some_logger') logger.addFilter(LogRecordTypeFilter(MyLogRecord)) # verify that type(record) is MyLogRecord try: logger.error('report some error') except TypeError as e: print(e) # Unexpected LogRecord type , expected