import logging import logging.handlers def enable_logger_print(): def _logger_str(self): s = '' if self.parent != None: s = _logger_str(self.parent) s += """\n%s\n""" % (self.name) for name,value in self.__dict__.items(): if name == 'parent': value = value and value.name or 'None' if name == 'level': value = '%s (%s)' %(value,logging.getLevelName(value)) s += ' %s = %s\n' % (name,value) return s def _handler_repr(handlername): def __repr__(self): s = '\n\t%s\n' % (handlername) for name,value in self.__dict__.items(): if name == 'level': value = '%s (%s)' %(value,logging.getLevelName(value)) s += '\t %s = %s\n' % (name,value) s += '\t' return s return __repr__ def _formatter_repr(self): s = "" for name,value in self.__dict__.items(): s += '\n\t\t%s = %s' % (name,value) return s def _manager_repr(self): s = "" for name,value in self.__dict__.items(): if name == 'root': value = value.name if name == 'loggerDict': value = _logger_list(); name='loggerDict keys' s += '\n %s = %s' % (name,value) return s def _filter_repr(self): return self.name def _logger_list(): return sorted([name for name in logging.Logger.manager.loggerDict]) for name in dir(): if name.endswith('Handler'): logging.__dict__[name].__repr__ = _handler_repr(name) for name in dir(logging): if name.endswith('Handler'): logging.__dict__[name].__repr__ = _handler_repr(name) for name in dir(logging.handlers): if name.endswith('Handler'): logging.handlers.__dict__[name].__repr__ = _handler_repr(name) logging.Logger.__str__ = _logger_str logging.Formatter.__repr__ = _formatter_repr logging.Filter.__repr__ = _filter_repr logging.Manager.__repr__ = _manager_repr if __name__ == '__main__': logging.basicConfig( level=logging.INFO) logger = logging.getLogger('') logger1 = logging.getLogger('a.b.c') logger2 = logging.getLogger('x.a') rootLogger = logging.getLogger() rootLogger.setLevel(logging.DEBUG) streamHandler = logging.StreamHandler() streamHandler.name = 'Stream Server' frmt = logging.Formatter("%(filename)s - %(name)s - %(levelname)s - %(message)s") streamHandler.setFormatter(frmt) fltr = logging.Filter('x') streamHandler.addFilter(fltr) logger.addHandler(streamHandler) print '='*80 print '\n*** print logger2 BEFORE enable_logger_print() ***\n' print logger2 print '='*80 enable_logger_print() # allows printing logger internals print '\n*** print logger2 AFTER enable_logger_print() ***\n' print logger2 print '='*80 logger.info('Help Me (root)') logger1.info('Help Me (a.b.c)') logger2.info('Help Me (x)')