python logging设置level失败的解决方法
一、问题描述
在用python开发时经常用到logging这个包,根据官方示例,如果要指定日志级别可以写成如下的方式。
importlogging logging.basicConfig(level=logging.INFO)
但是在实际应用中,这种方式有时候会设置不成功,导致无法打印出info及以下级别的日志。一种最直接的解决方式是将这两行代码提到文件的最前面,保证在所有其他import语句之前。
示例如下。
#encoding=utf8 importlogging logging.basicConfig(level=logging.INFO) #otherimport import... #yourcode if__name__=='__main__': pass
二、问题解释
basicConfig函数的部分源码如下:
defbasicConfig(**kwargs): _acquireLock() try: iflen(root.handlers)==0: filename=kwargs.get("filename") iffilename: mode=kwargs.get("filemode",'a') hdlr=FileHandler(filename,mode) else: stream=kwargs.get("stream") hdlr=StreamHandler(stream) fs=kwargs.get("format",BASIC_FORMAT) dfs=kwargs.get("datefmt",None) fmt=Formatter(fs,dfs) hdlr.setFormatter(fmt) root.addHandler(hdlr) level=kwargs.get("level") iflevelisnotNone: root.setLevel(level) finally: _releaseLock()
在代码里首先会判断一下root.handlers长度是否为0,如果不为0才新生成一个hander,并设置level。
如果在代码里调用这个函数之前,import了其他包,并且这些包里面也引用了logging这个包,就可能导致设置不成功。
logging包的默认日志级别为logging.UNSET,在这个日志级别只会打印warn及以上级别的日志。
以上这篇pythonlogging设置level失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。