Search code examples
pythonpython-3.xloggingsettings

Pass logging level as variable to python3 code?


Here is my code:

import logging
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

def setup_logger(name, log_file, level=logging.INFO):
    # To setup as many loggers as you want

    handler = logging.FileHandler(log_file)        
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)

    return logger

# Application Log:

app_log = setup_logger("app", "app.log", logging.DEBUG)

# Usage Log:

usage_log = setup_logger("usage", "usage.log", logging.DEBUG)

I want to pass the logging.DEBUG level as variable from settings.ini file.

Please instruct me how can I pass it as variable?

Should I do this as string "logging.INFO" or there is any other method?


Solution

  • Found the solution and sharing with others:

    Using this source's code:

    Log = logging.getLogger('myLogger')
    level = logging.getLevelName('INFO')
    Log.setLevel(level)
    

    I have set in my settings.ini file the log level I want:

    [Logging]
    log_level = DEBUG
    

    And modified the code:

    # Read settings.ini file
    
    config = configparser.ConfigParser()
    config.read(dir_path + "/settings.ini")
    
    # Logging
    
    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    
    log_level = config.get("Logging", "log_level")
    
    def setup_logger(name, log_file, level_name = 'INFO'):
        # To setup as many loggers as you want
    
        handler = logging.FileHandler(log_file)        
        handler.setFormatter(formatter)
    
        logger = logging.getLogger(name)
        level = logging.getLevelName(level_name)
        logger.setLevel(level)
        logger.addHandler(handler)
    
        return logger
    
    # Application Log:
    
    app_log = setup_logger("app", "app.log", log_level)
    
    # Usage Log:
    
    usage_log = setup_logger("usage", "usage.log", log_level)