def SetupLogging(): """Sets up a logging handler with dftimewolf's custom formatter.""" # Clear root handlers (for dependencies that are setting them) root_log = logging.getLogger() root_log.handlers = [] # Add a silent default stream handler, this is automatically set # when other libraries call logging.info() or similar methods. root_handler = logging.StreamHandler() root_handler.addFilter(lambda x: False) root_log.addHandler(root_handler) # We want all DEBUG messages and above. # TODO(tomchop): Consider making this a parameter in the future. logger.setLevel(logging.DEBUG) # File handler needs go be added first because it doesn't format messages # with color file_handler = handlers.RotatingFileHandler( logging_utils.DEFAULT_LOG_FILE, maxBytes=logging_utils.MAX_BYTES, backupCount=logging_utils.BACKUP_COUNT) file_handler.setFormatter(logging_utils.WolfFormatter(colorize=False)) logger.addHandler(file_handler) console_handler = logging.StreamHandler() colorize = not bool(os.environ.get('DFTIMEWOLF_NO_RAINBOW')) console_handler.setFormatter(logging_utils.WolfFormatter(colorize=colorize)) logger.addHandler(console_handler) logger.debug( 'Logging to stdout and {0:s}'.format(logging_utils.DEFAULT_LOG_FILE))
def SetupLogging(self): """Sets up stream and file logging for a specific module.""" self.logger = logging.getLogger(name=self.__class__.__name__) file_handler = handlers.RotatingFileHandler( logging_utils.DEFAULT_LOG_FILE, maxBytes=logging_utils.MAX_BYTES, backupCount=logging_utils.BACKUP_COUNT) file_handler.setFormatter(logging_utils.WolfFormatter(colorize=False)) self.logger.addHandler(file_handler) console_handler = logging.StreamHandler() formatter = logging_utils.WolfFormatter(random_color=True) console_handler.setFormatter(formatter) self.logger.addHandler(console_handler)