获取作为参数传递的内置函数的方法名称并在函数体内调用

get the inbuilt function's method name which is passed as an argument and call inside function body

我希望在我的工作中概括 python 中的日志记录 activity。

而不是调用 logger.debug()、logger.info()、logger.warning() 等,我正在考虑编写一个模板函数来获取所有必要的调用参数debug 、 info 或 warning 等

示例:

def logging_template(logger_name, level, message):
    logger = logging.getLogger(logger_name)
    logger.##level(message) //Here if level is passed as debug then logger.debug should be called. If level is passed as info then logger.info should be called.
Similarly if warning or error or critical is passed then corresponding logger calls should be triggered.

我对 IF-ELSE 块或条件检查不感兴趣。 ##level 应该替换为我传递的参数。

使用getattr,例如:

def logging_template(logger_name, level, message):
    logger = logging.getLogger(logger_name)
    getattr(logger, level)(message)

说明:

getattr(logger, level) returns 函数 logger.debug 如果 level 是字符串 "debug"。它returns logger.error 如果级别是字符串"error",依此类推。

为什么不直接使用 logger.log 方法呢?它采用可变级别,并且看起来与您在此处尝试执行的操作相同。