def get_logger(debug=True, logfile=None, replace_stdout=False): """ Create the logger and attach the handlers. :param debug: the level of the messages that we should log :type debug: bool :param logfile: the file name of where we should to save the logs :type logfile: str :param replace_stdout: wether we should pipe all stdout/stderr to the logger or not :type replace_stdout: bool :return: the new logger with the attached handlers. :rtype: logging.Logger """ # TODO: get severity from command line args if debug: level = logging.DEBUG else: level = logging.WARNING # Create logger and formatter logger = logging.getLogger(name='leap.vpn') logger.setLevel(level) formatter = logging.Formatter(LOG_FORMAT) # Console handler try: import coloredlogs coloredlogs.install(level='DEBUG') except ImportError: console = logging.StreamHandler() console.setLevel(level) console.setFormatter(formatter) using_coloredlog = False else: using_coloredlog = True if using_coloredlog: replace_stdout = False # File handler if logfile is not None: base_path = os.path.dirname(logfile) mkdir_p(base_path) logger.debug('Setting logfile to %s ', logfile) fileh = logging.FileHandler(logfile) fileh.setLevel(logging.DEBUG) fileh.setFormatter(formatter) logger.addHandler(fileh) logger.debug('File handler plugged!') if replace_stdout: replace_stdout_stderr_with_logging(logger) return logger
def get_logger(perform_rollover=False): """ Push to the app stack the needed handlers and return a Logger object. :rtype: logbook.Logger """ # NOTE: make sure that the folder exists, the logger is created before # saving settings on the first run. _base = os.path.join(get_path_prefix(), "leap") mkdir_p(_base) bitmask_log_file = os.path.join(_base, 'bitmask.log') # level = logbook.WARNING # if flags.DEBUG: # level = logbook.NOTSET level = logbook.NOTSET # This handler consumes logs not handled by the others null_handler = logbook.NullHandler() null_handler.push_application() file_handler = logbook.RotatingFileHandler(bitmask_log_file, format_string=LOG_FORMAT, bubble=True, max_size=sys.maxint) if perform_rollover: file_handler.perform_rollover() file_handler.push_application() stream_handler = ColorizedStderrHandler(level=level, format_string=LOG_FORMAT, bubble=True) stream_handler.push_application() logger = logbook.Logger('leap') return logger
def get_logger(perform_rollover=False): """ Push to the app stack the needed handlers and return a Logger object. :rtype: logbook.Logger """ # NOTE: make sure that the folder exists, the logger is created before # saving settings on the first run. _base = os.path.join(get_path_prefix(), "leap") mkdir_p(_base) bitmask_log_file = os.path.join(_base, "bitmask.log") # level = logbook.WARNING # if flags.DEBUG: # level = logbook.NOTSET level = logbook.NOTSET # This handler consumes logs not handled by the others null_handler = logbook.NullHandler() null_handler.push_application() file_handler = logbook.RotatingFileHandler( bitmask_log_file, format_string=LOG_FORMAT, bubble=True, max_size=sys.maxint ) if perform_rollover: file_handler.perform_rollover() file_handler.push_application() stream_handler = ColorizedStderrHandler(level=level, format_string=LOG_FORMAT, bubble=True) stream_handler.push_application() logger = logbook.Logger("leap") return logger