python的logging模块setLevel(LEVELS.get(‘default‘,logging.NOTSET))
LEVELS = {'debug':logging.DEBUG,
'info':logging.INFO,
'warning':logging.WARNING,
'error':logging.ERROR,
'critical':logging.CRITICAL}
logger.setLevel(LEVELS.get('default',logging.NOTSET))
logger.setLevel(LEVELS.get(‘default’,logging.NOTSET)) 是在Python中使用logging模块配置日志记录器时的一行代码。这行代码的作用是设置日志记录器的级别。让我们来详细解释一下:
logger 是一个日志记录器对象,它是一个logging.Logger类的实例。
setLevel 方法用于设置日志记录器的级别,即确定应该记录哪些级别的日志信息。
LEVELS 是一个字典(在Python中表示为dict),它可能存储了不同日志级别的名称和对应的值。
get 方法是字典的方法,用于获取字典中键对应的值。如果键不存在,则返回提供的第二个参数,这里是一个默认值logging.NOTSET。
logging.NOTSET 是logging模块中定义的一个级别,其数值为0。它表示不进行任何日志记录。
具体到这行代码:
LEVELS.get(‘default’,logging.NOTSET):尝试从LEVELS字典中获取键’default’对应的值。如果’default’不存在,则返回logging.NOTSET。
然后将获取到的值(可能是一个日志级别,如logging.INFO、logging.DEBUG等,或者logging.NOTSET)设置为logger的日志级别。
这段代码是使用 Python 的标准库 logging 进行日志级别设置。
logger 应该是一个日志记录器对象。LEVELS.get(‘default’, logging.NOTSET) 尝试从名为 LEVELS 的字典中获取键为 ‘default’ 的值,如果该键不存在,则返回 logging.NOTSET。然后将获取到的值作为日志级别设置给日志记录器 logger。
如果 LEVELS 字典中定义了合理的日志级别(例如 logging.DEBUG、logging.INFO、logging.WARNING、logging.ERROR、logging.CRITICAL),那么这段代码可以根据配置动态地设置日志记录器的级别。如果 LEVELS 字典中没有 ‘default’ 键或者对应的值不合法,日志记录器将使用默认的 NOTSET 级别,这意味着将记录所有级别的日志消息,因为 NOTSET 会使得日志记录器将日志传递给父级处理程序,而父级处理程序的默认行为是处理所有级别的日志。
logging.NOTSET是 Python 标准库logging模块中的一个常量。
当一个日志记录器(Logger)被设置为logging.NOTSET级别时,它实际上将把日志事件传递给它的父级日志记录器处理,并且不会对日志事件进行任何过滤或处理。
例如,如果一个日志记录器的级别设置为logging.NOTSET,而它的父级日志记录器的级别设置为logging.INFO,那么这个日志记录器将把所有的日志事件传递给父级日志记录器,并且只有那些级别为logging.INFO或更高级别的日志事件才会被处理和输出。