async def test_logger_factory_minimum_level_to_debug(): factory = LoggerFactory() test_target_1 = InMemoryTarget() test_target_2 = InMemoryTarget() test_target_3 = InMemoryTarget() factory \ .add_target(test_target_1, LogLevel.DEBUG) \ .add_target(test_target_2, LogLevel.INFORMATION) \ .add_target(test_target_3, LogLevel.ERROR) logger = factory.get_logger(__name__) assert logger is not None await logger.info('Hello, World') assert 'Hello, World' == test_target_1.records[0].message assert 'Hello, World' == test_target_2.records[0].message assert not test_target_3.records await logger.debug('Lorem ipsum') assert 2 == len(test_target_1.records) assert 'Lorem ipsum' == test_target_1.records[1].message assert 1 == len(test_target_2.records) assert not test_target_3.records
async def test_logger_factory_two_targets(): factory = LoggerFactory() test_target_1 = InMemoryTarget() test_target_2 = InMemoryTarget() factory\ .add_target(test_target_1) \ .add_target(test_target_2) logger = factory.get_logger(__name__) assert logger is not None await logger.log('Hello, World') assert 'Hello, World' == test_target_1.records[0].message assert 'Hello, World' == test_target_2.records[0].message
def test_logger_factory_get_targets(): factory = LoggerFactory() test_target = InMemoryTarget() factory.add_target(test_target, minimum_level=LogLevel.CRITICAL) targets = factory.targets assert targets is not None assert targets[LogLevel.DEBUG] == [] assert targets[LogLevel.INFORMATION] == [] assert targets[LogLevel.CRITICAL] == [test_target] second_target = InMemoryTarget() factory.add_target(second_target, minimum_level=LogLevel.INFORMATION) assert targets[LogLevel.INFORMATION] == [second_target] assert targets[LogLevel.CRITICAL] == [test_target]
def __init__(self, max_size, fallback_target=None): if fallback_target is None: fallback_target = InMemoryTarget() self.fallback = fallback_target super().__init__(max_size=max_size, fallback_target=self.fallback, retry_delay=0.001, progressive_delay=False)
async def test_logger_factory_minimum_level(): factory = LoggerFactory() test_target_1 = InMemoryTarget() test_target_2 = InMemoryTarget() factory\ .add_target(test_target_1, LogLevel.INFORMATION) \ .add_target(test_target_2, LogLevel.ERROR) logger = factory.get_logger(__name__) assert logger is not None await logger.info('Hello, World') assert 'Hello, World' == test_target_1.records[0].message assert not test_target_2.records await logger.error('Oh, no!') assert 'Oh, no!' == test_target_1.records[1].message assert 'Oh, no!' == test_target_2.records[0].message
async def test_records_support_extra_data(): factory = LoggerFactory() test_target = InMemoryTarget() factory.add_target(test_target) logger = factory.get_logger(__name__) assert logger is not None await logger.info('Hello, World', id=2016, name='Tyberiusz') record = test_target.records[0] # type: LogRecord assert {'id': 2016, 'name': 'Tyberiusz'} == record.data
async def test_records_support_extra_arguments(): factory = LoggerFactory() test_target = InMemoryTarget() factory.add_target(test_target) logger = factory.get_logger(__name__) assert logger is not None await logger.info('Hello, World', 'One', 'Two', 'Three') record = test_target.records[0] # type: LogRecord assert ('One', 'Two', 'Three') == record.args
async def test_records_have_timestamp(): factory = LoggerFactory() test_target = InMemoryTarget() factory.add_target(test_target) logger = factory.get_logger(__name__) assert logger is not None for i in range(10): await logger.info(f'Hello, World {i}') for record in test_target.records: assert record.time
async def test_logger_exception(): factory = LoggerFactory() test_target = InMemoryTarget() factory.add_target(test_target) logger = factory.get_logger(__name__) try: 1 / 0 except Exception as ex: # passing exception await logger.exception('Oh, no!', ex) assert 'Oh, no!' == test_target.records[0].message try: 1 / 0 except Exception: # without passing exception await logger.exception('Oh, no2!') assert 'Oh, no2!' == test_target.records[1].message
def test_logger_factory_raises_invalid_minimum_level(invalid_value): factory = LoggerFactory() with raises(ValueError, match='Invalid minimum_level'): factory.add_target(InMemoryTarget(), minimum_level=invalid_value)