class FilterTests(unittest.TestCase): """Tests log filters""" @defer.inlineCallbacks def setUp(self): """Setup the logger and the handler""" yield super(FilterTests, self).setUp() self.handler = MementoHandler() self.handler.setLevel(logging.DEBUG) root_logger.addHandler(self.handler) self.addCleanup(root_logger.removeHandler, self.handler) if filesystem_logger is not None: filesystem_logger.addHandler(self.handler) self.addCleanup(filesystem_logger.removeHandler, self.handler) twisted_logger.addHandler(self.handler) self.addCleanup(twisted_logger.removeHandler, self.handler) self.addCleanup(self.handler.close) @skipIfOS('win32', 'There is not filesystem_logger implementation in '\ 'windows yet, see bug #823316.') def test_multiple_filters(self): """Tests logging with more than one filter.""" test_logger = logging.getLogger('ubuntuone.SyncDaemon.FilterTest') test_logger.debug('debug info 0') self.assertEquals(1, len(self.handler.records)) self.handler.addFilter(MultiFilter(['ubuntuone.SyncDaemon', 'twisted', 'pyinotify'])) test_logger.debug('debug info 1') self.assertEquals(2, len(self.handler.records))
class MultiFilterTest(unittest.TestCase): """Tests for logger.MultiFilter""" @defer.inlineCallbacks def setUp(self): """Setup the logger and the handler""" yield super(MultiFilterTest, self).setUp() self.handler = MementoHandler() self.logger = logging.getLogger(self.__class__.__name__) self.logger.addHandler(self.handler) self.logger.setLevel(logging.DEBUG) @defer.inlineCallbacks def tearDown(self): """close the handler and restore the logger (Logger's are global)""" yield super(MultiFilterTest, self).tearDown() self.handler.close() self.logger.removeHandler(self.handler) self.logger.setLevel(logging.DEBUG) def test_no_filters(self): """Tests filtering without any filter in self.filters.""" self.handler.addFilter(MultiFilter()) self.logger.debug('this msg should be logged') self.assertEqual(1, len(self.handler.records)) def test_single_filter(self): """Tests filtering with one filter.""" self.handler.addFilter(MultiFilter([self.__class__.__name__])) self.logger.debug('this msg should be logged') self.assertEqual(1, len(self.handler.records)) other_logger = logging.getLogger("NO_LOG."+self.__class__.__name__) other_logger.debug('this msg shouldn\'t be logged') self.assertEqual(1, len(self.handler.records)) def test_multiple_filters(self): """Tests filtering with more than one filter.""" self.handler.addFilter( MultiFilter([self.__class__.__name__, self.__class__.__name__ + ".child"])) no_logger = logging.getLogger("NO_LOG."+self.__class__.__name__) yes_logger = logging.getLogger(self.__class__.__name__ + '.child') self.logger.debug('this msg should be logged') self.assertEqual(1, len(self.handler.records)) no_logger.debug('this msg shouldn\'t be logged') self.assertEqual(1, len(self.handler.records)) yes_logger.debug('this msg from a child logger should be logged') self.assertEqual(2, len(self.handler.records))