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