1.两种级别设置:
全局级别:生成logger对象后设置的级别
局部级别:生成handler对象设置的级别
我们都知道输出的级别不能低于设定的级别,那么全局级别和局部级别哪一个对输出产生影响?
经过多次尝试发现:向屏幕和文件传输日志时,日志级别需要先和全局级别做比较,级别高于全局再去和局部级别做比较。需要经过两次过滤,才能向屏幕和文件传入日志。
import logging # 1.生成logger对象 logger = logging.getLogger("130") logger.setLevel(logging.INFO) #不设置级别,默认最低级别是warning。 # 2.生成handler对象 # 把handler对象绑定到logger ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) #对屏幕和文件分别设置级别 fh = logging.FileHandler("130.log") fh.setLevel(logging.ERROR) logger.addHandler(ch) logger.addHandler(fh) # 3.生成formatter对象 # 把formatter对象绑定到handler file_formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s") console_formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(lineno)s %(message)s") ch.setFormatter(console_formatter) fh.setFormatter(file_formatter) logger.debug("miss eat") logger.warning("hello girl")