def logging_config(self, name): if name != 'main': raise KeyError parser = SafeConfigParser() parser.read(self.path) for section_name in ('loggers', 'handlers', 'formatters'): if not parser.has_section(section_name): raise KeyError loggers = convert_loggers(parser) handlers = convert_handlers(parser) formatters = convert_formatters(parser) return combine(loggers, handlers, formatters)
def test_combined(ini_cp): loggers = convert_loggers(ini_cp) handlers = convert_handlers(ini_cp) formatters = convert_formatters(ini_cp) root_logger = loggers['root'] other_loggers = dict([(k, v) for k, v in loggers.items() if k != 'root']) expected = { 'version': 1, 'root': root_logger, 'loggers': other_loggers, 'handlers': handlers, 'formatters': formatters, } actual = combine(loggers, handlers, formatters) assert expected == actual
def test_formatters(ini_cp): expected = { 'simple': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s' }, 'complicated': { 'format': 'F1 %(asctime)s %(levelname)s %(message)s', 'datefmt': '%a, %d %b %Y %H:%M:%S +0000', # class is omitted because it's the default }, 'withclass': { # montague doesn't have to inspect the callable for formatters # so this class doesn't have to exist '()': 'foobar.FooBarClass', 'first': 'foo', 'second': 'bar', }, } actual = convert_formatters(ini_cp) assert expected == actual