проблема в том, что все, что находится на корневом уровне (включая аргументы в функцию, а не внутреннюю часть функции), вычисляется, как только Python увидит это (то есть вычислено до того, как python когда-либо вызовет журнал функция) ... чтобы решить эту проблему, вы можете поместить свою логику в функцию ... и затем выполнять логику, только если это уместно
def lazy_log(callable_fn,log_name,log_level):
logger = logging.getLogger(log_name)
if logger.getEffectiveLevel() > log_level:
return
logger.log(msg=str(callable_fn()),level=log_level)
Я думаю, может сработать для вас
lazy_log(lambda : sum(range(1000000)), None, 51)