lib: Change topology to output INFO and DEBUG to stdout and other levels to stderr

Previously, all logs were sent to stderr
This commit is contained in:
Martin Winter 2017-07-27 04:09:45 -07:00 committed by Donald Sharp
parent c11c4cc7d3
commit 9427b78f65

View File

@ -39,6 +39,10 @@ DEBUG_TOPO2LOGGING = {
'critical': logging.CRITICAL,
}
class InfoFilter(logging.Filter):
def filter(self, rec):
return rec.levelno in (logging.DEBUG, logging.INFO)
#
# Logger class definition
#
@ -55,11 +59,21 @@ class Logger(object):
# Create default global logger
self.log_level = logging.INFO
self.logger = logging.Logger('topolog', level=self.log_level)
handler = logging.StreamHandler()
handler.setFormatter(
handler_stdout = logging.StreamHandler(sys.stdout)
handler_stdout.setLevel(logging.DEBUG)
handler_stdout.addFilter(InfoFilter())
handler_stdout.setFormatter(
logging.Formatter(fmt='%(asctime)s %(levelname)s: %(message)s')
)
self.logger.addHandler(handler)
handler_stderr = logging.StreamHandler()
handler_stderr.setLevel(logging.WARNING)
handler_stderr.setFormatter(
logging.Formatter(fmt='%(asctime)s %(levelname)s: %(message)s')
)
self.logger.addHandler(handler_stdout)
self.logger.addHandler(handler_stderr)
# Handle more loggers
self.loggers = {'topolog': self.logger}