The following code changes the log level from INFO to DEBUG, and even though logger.getEffectiveLevel() returns DEBUG, the debug message doesn't get logged, as the output shows.
version of python: 3.10.12
---out.log---
log level 1: INFO
log level 2: DEBUG
Code
import logging
import logging.config
def test_change_log_level():
logger = logging.Logger("my-logger", logging.INFO)
file_handler = logging.FileHandler(filename="out.log")
file_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)
logger.debug("should not be logged ...")
logger.info("log level 1: %s", logging.getLevelName(logger.getEffectiveLevel()))
logger.setLevel(logging.DEBUG)
file_handler.setLevel(logging.DEBUG)
logger.info("log level 2: %s", logging.getLevelName(logger.getEffectiveLevel()))
logger.debug("debug level is effective")
if __name__ == '__main__':
test_change_log_level()