Privacy Policy
Snippets index

  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()