What I am trying to do is something like this:
def custom_logger(user_logger, log_level, *args, **kwargs):
# do some stuff..
user_logger.log_level(*args, **kwargs)
or like this:
def create_logger(module_name, log_level=DEBUG):
logger = logging.getLogger(module_name)
logger.setLevel(logging.log_level)
How can I achieve something like this? Because it will clean up a lot of things.
asked Nov 21, 2019 at 19:03
Eziz Durdyyev
1,1582 gold badges17 silver badges39 bronze badges
1 Answer 1
You can use the getattr function to obtain an attribute by name:
def custom_logger(user_logger, log_level, *args, **kwargs):
log = getattr(user_logger, log_level) # or log_level.lower() if log_level is in upper case
# do some stuff..
log(*args, **kwargs)
def create_logger(module_name, log_level=DEBUG):
logger = logging.getLogger(module_name)
logger.setLevel(getattr(logging, log_level))
answered Nov 21, 2019 at 19:09
blhsing
109k9 gold badges89 silver badges132 bronze badges
Sign up to request clarification or add additional context in comments.
2 Comments
Eziz Durdyyev
how can I apply this to create_logger?
Eziz Durdyyev
@blhsubg, did you try it before you answered, or you sure this will work with loggers? again, may be i am doing it wrong but.. it won't work with me. sorry
lang-py
kwargsshould have 2 asterisks:**kwargs.user_logger.log_level()instead of using whatever function name was passed as thelog_levelargument.