Python 寻找将字符串转换为日志记录的有效方法';s日志级别

Python 寻找将字符串转换为日志记录的有效方法';s日志级别,python,Python,我正在使用记录器模块。在我的代码中有如下内容: logger.setLevel(logging.DEBUG) 我喜欢在我的应用程序中使用命令行参数设置日志级别,因此我将有一个字符串包含模块内定义的日志级别之一: CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0 我不想让别人告诉我日志级别号。我喜欢他们通过我的应用程序的命令行给出一个字符串 我

我正在使用记录器模块。在我的代码中有如下内容:

logger.setLevel(logging.DEBUG)

我喜欢在我的应用程序中使用命令行参数设置日志级别,因此我将有一个字符串包含模块内定义的日志级别之一:

CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
我不想让别人告诉我日志级别号。我喜欢他们通过我的应用程序的命令行给出一个字符串

我知道我可以使用Python的match case来实现这一点。我来自C#背景,习惯了C#的枚举,我真的希望我不必使用Python的match case来实现这一点


是否有更好、更简洁的方法将字符串转换为高于日志级别的字符串?

是的,您可以创建字典并将值映射到不同的日志级别字符串名称

试试这个:

log_level = {
    "CRITICAL": 50,
    "FATAL": 'CRITICAL',
    "ERROR": 40,
    "WARNING": 30,
    "WARN": 'WARNING',
    "INFO": 20,
    "DEBUG": 10,
    "NOTSET": 0
}

高效还是短?使用地图,然后查找地图以获取日志级别。如果找不到,则默认为合理的。这里的提示:高效通常是简短的,尽管这是非常主观的。如果我创建一个字典,它不是会更清楚吗?顺便说一句,谢谢你的帮助,map比match case好得多。@hookenz,既然你及时做出了回应,你想创建一个答案,这样你就得到了信任吗?不能有“致命的”:“关键的”,我不明白。你能解释一下吗?字典必须只返回数字。因此,在这种情况下,你必须为
FATAL'指定一个数字。这同样适用于
WARN`。