How to accept argparse.log_level parameter and propagate its value to all other modules

Zoran zljubisic at gmail.com
Thu Jan 28 00:41:40 EST 2021


Yes you are right. I changed the files:

# main.py
import argparse
import mymodule
import logging

logger = logging.getLogger(__name__)

def log_some_messages():
    logger.debug(f'{__name__} - debug message')
    logger.info(f'{__name__} - info message')
    logger.warning(f'{__name__} - warning message')

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description="Script for executing data quality checks.")
    parser.add_argument("--log-level", default='info', choices=['notset', 'debug', 'info', 'warning', 'error', 'critical'], help="set log level")
    args = parser.parse_args()

    log_level = logging.getLevelName(args.log_level.upper())
    logging.basicConfig(level=log_level, format=f"%(asctime)s - [%(levelname)s] - %(name)s - (%(filename)s).%(funcName)s(%(lineno)d) - %(message)s")
    logger.setLevel(log_level)

    log_some_messages()
    mymodule.log_some_messages()

#mymodule.py
import logging

logger = logging.getLogger(__name__)


def log_some_messages():
    logger.debug(f'{__name__} - debug message')
    logger.info(f'{__name__} - info message')
    logger.warning(f'{__name__} - warning message')

and everything works as it should.
I was milsleaded by this article https://towardsdatascience.com/8-advanced-python-logging-features-that-you-shouldnt-miss-a68a5ef1b62d

Thanks.



More information about the Python-list mailing list