Quick and dirty set_logger() ¶
file set_looger.py:
#!/usr/bin/env python3 import sys import logging def set_logger(verbosity, logfile='', logger_name=__name__): logger = logging.getLogger(logger_name) levels = [logging.ERROR, logging.WARNING, logging.INFO, logging.DEBUG] loglevel = levels[min(len(levels)-1, verbosity)] # capped to number of levels logger.setLevel(loglevel) formatter = logging.Formatter('%(asctime)s|%(levelname)s|%(module)s| %(message)s') handler = logging.StreamHandler(sys.stdout) handler.setFormatter(formatter) logger.addHandler(handler) if logfile: handler = logging.FileHandler(logfile) handler.setFormatter(formatter) logger.addHandler(handler) return logger def main(): import argparse parser = argparse.ArgumentParser(description='quick and dirty set_logger()') parser.add_argument('-l', '--logfile', metavar='logfile', help='log filename; defaults to none') parser.add_argument('-v', '--verbosity', type=int, choices=range(4), default=1, action='store', help="log verbosity level") args = parser.parse_args() logger = set_logger(args.verbosity, logfile=args.logfile, logger_name=__name__) logger.debug('message') logger.info('message') logger.warning('message') logger.error('message') if __name__=='__main__': main()